
Git 備忘錄
入門
初始化新倉庫
git init
克隆現有倉庫
git clone <url>
準備提交
新增未跟蹤檔案或未暫存的變更
git add <檔案>
新增所有未跟蹤檔案和未暫存的變更
git add .
選擇要暫存的檔案部分
git add -p
移動檔案
git mv <舊名稱> <新名稱>
刪除檔案
git rm <檔案>
讓 Git 忽略檔案而不刪除它
git rm --cached <檔案>
取消暫存一個檔案
git reset <檔案>
取消暫存所有內容
git reset
檢視你已暫存的內容
git status
進行提交
進行提交(並開啟文字編輯器編寫提交資訊)
git commit
進行提交
git commit -m '提交資訊'
提交所有未暫存的變更
git commit -am '提交資訊'
在分支間切換
切換分支
git switch <分支名> 或 git checkout <分支名>建立分支
git switch -c <分支名> 或 git checkout -b <分支名>列出分支
git branch
按最近提交時間列出分支
git branch --sort=-committerdate
刪除分支
git branch -d <分支名>
強制刪除分支
git branch -D <分支名>
檢視暫存/未暫存的變更
檢視所有暫存和未暫存的變更
git diff HEAD
只檢視暫存的變更
git diff --staged
只檢視未暫存的變更
git diff
檢視提交記錄的變更
顯示一個提交與其父提交的差異
git show <提交記錄>
比較兩個提交記錄的差異
git diff <提交記錄> <提交記錄>
比較一個檔案自某個提交記錄以來的差異
git diff <提交記錄> <檔案>
顯示差異的摘要
git diff <提交記錄> --stat git show <提交記錄> --stat引用提交記錄的方式
每次我們說 <提交記錄> 時,你都可以使用以下任何一種
- 一個分支
- main
- 一個標籤
- v0.1
- 一個提交 ID
- 3e887ab
- 一個遠端分支
- origin/main
- 當前提交
- HEAD
- 3次提交前
- HEAD^^^ 或 HEAD~3
放棄你的變更
放棄單個檔案的未暫存變更
git restore <檔案> 或 git checkout <檔案>放棄單個檔案的所有暫存和未暫存變更
git restore --staged --worktree <檔案> 或 git checkout HEAD <檔案>放棄所有暫存和未暫存的變更
git reset --hard
刪除未跟蹤檔案
git clean
'暫存' 所有暫存和未暫存的變更
git stash
編輯歷史
"撤銷" 最近一次提交(保持工作目錄不變)
git reset HEAD^
將最近 5 次提交合併成一次
git rebase -i HEAD~6
然後將要合併到前一個提交的提交記錄前的 "pick" 改為 "fixup"
撤銷一次失敗的 rebase
git reflog <分支名>
然後手動在 reflog 中找到正確的提交 ID,再執行
git reset --hard <提交記錄>
修改提交資訊(或新增遺漏的檔案)
git commit --amend
程式碼考古
檢視分支的歷史記錄
git log main git log --graph main git log --oneline顯示修改了某個檔案的所有提交記錄
git log <檔案>
顯示修改了某個檔案的所有提交記錄,包括它重新命名之前的記錄
git log --follow <檔案>
查詢新增或刪除了某些文字的所有提交記錄
git log -G banana
顯示最後修改了檔案中某一行的人
git blame <檔案>
合併分叉的分支
使用 rebase 合併
git switch banana git rebase main
使用 merge 合併
git switch main git merge banana
使用 squash merge 合併
git switch main git merge --squash banana git commit
將一個分支更新到與另一個分支同步(也稱為 "快進合併")
git switch main git merge banana
將一個提交記錄複製到當前分支
git cherry-pick <提交記錄>
恢復舊檔案
獲取另一個提交記錄中某個檔案的版本
git checkout <提交記錄> <檔案> 或 git restore <檔案> --source <提交記錄>新增遠端倉庫
git remote add <名稱> <URL>
推送你的變更
將 main 分支推送到遠端 origin
git push origin main
將當前分支推送到其遠端 "跟蹤分支"
git push
推送一個你從未推送過的分支
git push -u origin <分支名>
強制推送
git push --force-with-lease
推送標籤
git push --tags
拉取變更
獲取變更(但不修改你任何本地分支)
git fetch origin main
獲取變更然後 rebase 當前分支
git pull --rebase
獲取變更然後將它們合併到當前分支
git pull origin main 或 git pull配置 Git
設定一個配置選項
git config user.name '你的名字'
全域性設定選項
git config --global ...
新增一個別名
git config alias.st status
檢視所有可用的配置選項
man git-config
重要檔案
本地 git 配置
.git/config
全域性 git 配置
~/.gitconfig
要忽略的檔案列表
.gitignore