Skip to main content

如何修改 git commits

· 3 min read

與其他人合作🤝使用 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,儲存後就可以修改訊息。

參考資料