###### <p style="text-align: right"> 建立日期:2021-01-01 / 更新日期:2021-01-02</p> # Git ###### tags: `Git` ## Git 流程  圖片來源:[git init - 建立數據庫 by 洧杰](https://w3c.hexschool.com/git/7ca21e02 "W3HexSchool / Git 基礎操作 / git init - 建立數據庫") ## 基本 command 指令 | 指令 | 功能 | | --- | --- | | cd **路徑** | 移動路徑 | | cd .. | 回上一層 | | ls | 展開列表<br>Windows 命令提示字元無法使用,需使用 Git Bash | | mkdir **資料夾名稱** | 開資料夾 | | touch **檔名.副檔名** | 新增檔案<br>Windows 命令提示字元無法使用,需使用 Git Bash | ## 基礎環境指令 | 指令 | 功能 | | --- | --- | | git --version | 查詢安裝版本 | | git config --global user.email "**email**" | 全域設定 Email | | git config --global user.name "**name**" | 全域設定使用者名稱 | | git config --list | 查詢設定列表,可以看到 user.email、user.name 等資料 | ## 新增本地 / 複製遠端數據庫 | 指令 | 功能 | | --- | --- | | git init | 初始化,新建數據庫,Git 開始對指定的資料夾進行版本控制 | * 本地:新增資料夾 → cd 資料夾路徑 → `git init` → 成功的話資料夾後方會出現(master) * 遠端:`git clone 遠端數據庫網址` ## 增加 / 刪除檔案(add 索引 → commit 記錄 → push 資料) | 指令 | 功能 | | --- | --- | | git add **檔名.副檔名** | 增加至索引 - 單一檔案 | | git add . | 增加至索引 - 全部檔案 | | git status | 查詢狀態 | | git commit -m '**更新訊息**' | 將索引提交至本地數據庫 | | git log | 查詢 commit 歷史記錄 | | git push | 將本地端資料更新到遠端數據庫 | ## 還原指令 | 指令 | 功能 | | --- | --- | | git reset HEAD **檔名.副檔名** | 取消索引 - 單一檔案 | | git reset HEAD | 取消索引 - 全部檔案 | | git checkout **檔名.副檔名** | 還原至最後一次 commit 狀態 - 單一檔案 | | git reset --hard | 還原至最後一次 commit 狀態 - 全部檔案 | | git reset --hard HEAD^ | 刪除最近一次 commit | | git reset --hard ORIG_HEAD | 上面語法如果刪除錯了可以再用此語法還原 | | git reset --soft HEAD^ | 刪除最近一次 commit,但保留異動內容 | | git commit --amend | commit 後發現有幾個檔案忘了加入進去,想要補內容進去時 | ## 分支 | 指令 | 功能 | | --- | --- | | git checkout **commit 編號前4碼** | 移動到指定的 commit 紀錄,commit 編號可透過 git log 查看 | | git checkout master | 移動回 master | | git branch | 顯示所有本地分支 | | git bracnch **分支名稱** | 新增分支 | | git checkout **分支名稱** | 切換分支 | | git merge **分支名稱** | 合併指定分支到目前的分支 | | git branch -d **分支名稱** | 刪除分支 | * HEAD:目前所在位置的指標 ## 遠端數據庫操作 | 指令 | 功能 | | --- | --- | | git clone **遠端數據庫網址** | 複製遠端數據庫 | | git remote | 查詢遠端數據庫 | | git remote rename **遠端數據庫原名稱** **修改名稱** | 修改遠端數據庫名稱 | | git push **遠端數據庫名稱** **遠端分支名稱** | 將本地分支推送到遠端分支 | | git pull | 將遠端分支拉下來與本地分支進行合併 | * git pull = git fetch + git merge 不希望 pull 下來導致自己的數據庫太亂又擔心有衝突時,可以先使用 `git fetch origin(遠端數據庫) branch1(遠端分支)`,此時你的分支會多一個 FETCH_HEAD 的分支,這個就是遠端數據庫的分支,可以等到你看過沒問題後,再合併 FETCH_HEAD 也 ok。 ## 標籤 | 指令 | 功能 | | --- | --- | | git tag | 查詢標籤 | | git tag -n | 查詢詳細標籤 | | git tag -d **標籤名稱** | 刪除標籤,不會影響 commit 內容 | | git tag **標籤名稱** | 新增輕量標籤到目前的 commit | | git tag **標籤名稱** **commit 編號前7碼** | 新增輕量標籤到指定的 commit 紀錄,commit 編號可透過 git log 查看 | | git tag **標籤名稱** -a -m "**備註內容**" | 新增標示標籤 | | git tag **標籤名稱** **commit 編號前7碼** -a -m "**備註內容**" | 新增標示標籤到指定的 commit 紀錄,commit 編號可透過 git log 查看 | | git checkout **標籤名稱** | 切換到標籤的 commit | ## 暫存 | 指令 | 功能 | | --- | --- | | git stash | 暫時儲存當前目錄 | | git stash list | 瀏覽 stash 列表 | | git stash pop | 還原暫存 | | git stash drop | 清除最新暫存 | | git stash clear | 清除全部暫存 | ## 不要進版本控制的資料夾與檔案 | 指令 | 功能 | | --- | --- | | touch .gitignore | 若資料夾內沒有 .gitignore,新增此檔案,儲存要忽略的項目 | ### 編輯 .gitignore 內容 **[gitignore 大全](https://github.com/github/gitignore "A collection of useful .gitignore templates")** * 忽略單一檔案:檔名.副檔名 * 忽略某檔案類型:*.副檔名 * 忽略資料夾:資料夾名稱/ ## merge 訊息處理 若出現以下訊息,輸入 `:wq!` 即可 ``` Merge branch 'feature1' # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit. ``` ## 參考資料 * [Git - Documentation](https://git-scm.com/doc "Git - Documentation") * [掌握 Git 與 Github 程式時光機](https://www.udemy.com/course/learninggit/ "Vue 出一個電商網站") * [為你自己學 Git](https://gitbook.tw/ "Git 教學 - Git 書 - 為你自己學 Git | 高見龍") * [Git & GitHub 教學手冊](https://w3c.hexschool.com/git/cfdbd310 "Git & GitHub 教學手冊 - Git 環境教學 | W3HexSchool")
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up