與其他人合作🤝使用 git 版本控制系統時,為了讓最後合併(Merge)的 commit 好看,常常會需要調整自己的 commit。
同時修改一個 commit
剛開始工作時一次只修改一個 commit,最常用到的命令是:
修改 commit 訊息 (message)
git commit --amend
在 commit 後加入--amend
(修正) 參數,可以修改最後一個 commit 的訊息。
將後續修改合併成一個 commit
git rebase -i HEAD~2
將要合併的 commit 從pick改成s(squish) 後儲存,修改 commit 訊息後,可以得到剩下的一個 commit。
同時修改多個 commit
到後來為了讓審查 (Review) 更容易,漸漸開始嘗試在遇到某些較複雜的問題時,在同一個 Branch 堆疊多個 commit 的開發方式。
假設手上有 3 個疊在一起的 commit (commit 1,commit 2,commit 3. commit 3 是最新的 commit), 這時在修改的過程中會遇到的主要問題,
就是現在的修改與最新的 commit (commit 3) 無關,但與最前面的 commit (commit 1) 相關。
這時若想要將現在的修改與之前的 commit 1 合併,原本常使用的git rebase
就不是那麼好用了。
為前面 commit 的打補釘
要為前面 commit 的打補釘,可以使用命令
git commit --fixup <commit>
<commmit>
代表之前 commit (commit 1) 的 hash。輸入後最新的 commit 中會出現fixup <commit 1>
的註記。
合併所有的補釘
當一系列修改完成後,只要使用命令
git rebase -i --autosquash
儲存後可以得到干淨的 commit 1,2,3🤘
修改任何之前的 commit 訊息
如果只想修改之前的 commit 訊息,可以用命令
git rebase -i HEAD~3
將pick改成reword,儲存後就可以修改訊息。