Git 合並多次 commit
有時候在一個分支的多次意義相近的 commit,會把整個提交歷史搞得很混亂,此時可以將一部分的 commit 合並為一個 commit,以美化整個 commit 歷史,可以使用 rebase 的方法來合並多次 commit,主要步驟如下:
1. git log 查看當前的提交歷史
比如需要將以下 3 個 ”請假應用客戶端代碼優化“ 的 commit 合並為一個 commit;
2. git rebase 進行 git 壓縮
執行 git rebase -i HEAD~4 對最近的 4 個 commit 進行 rebase 操作;
具體的操作下面的 Commands 說明得很清楚了,對於 commit 合並可以使用 squash、fixup 指令,區別是 squash 會將該 commit 的注釋添加到上一個 commit 注釋中,fixup 是放棄當前 commit 的注釋;
編輯后保存退出,git 會自動壓縮提交歷史,如果有沖突,記得解決沖突后,使用 git rebase --continue 重新回到當前的 git 壓縮過程;
3. 推送到遠程倉庫 git push -f
重新查看提交提交歷史,會發現這些 commit 已經合並了,整個提交歷史簡潔了很多:
刪除某次 commit
同樣的,利用 git 壓縮 rebase 指令來刪除某個 commit,過程和以上是類似的;
在 git log 下,假如我們需要刪除“請假應用客戶端代碼優化”這個 commit:
可以通過 git rebase -i HEAD~1 (對最近1次 commit 進行 rebase) 或 git rebase -i 9fbf10(對 commit id 前幾位為 9fbf10 的 commit 之后的 commit 進行 rebase);
將需要刪除的 commit 設置操作指令 drop ,保存退出即可;
在執行 git log 時,可以發現該條 commit 已經從提交歷史中刪除了;