1. 程式人生 > >git如何合併只有兩個commit到一個

git如何合併只有兩個commit到一個

用rebase -i

比如下圖的commit 歷史,想要把 "Second change" 和 "Third change" 這兩個commit合併到一起

那麼可以 

1 git rebase -i 7a734e9d47895e096313003d6a2e4f697a16e2e3

注意 7a734e9d47895e096313003d6a2e4f697a16e2e3 是 "Second change" 的前一個commit ID

然後會出現編輯器 (具體什麼編輯器看你的配置,在linux下,預設是 vi)列出從 7a734e 後面的所有commit,如下圖

因為我們要把 "Second change" 和 "Third change" 合併到一起,所以只需要把 "Third change"前面的那個 pick 改成 squash即可,意思是將 "Third change" 和 它前一個commit (即 "Second change") 合併

修改後應該是這樣

然後儲存退出編輯器,git 就會執行rebase操作,當他遇到 "Second" 和 "Third" 的時候,會再次啟動編輯器告訴你即將合併,讓你提供commit message,如下圖

預設的包括了兩個commit的原始訊息,你可以在這裡任意修改commit message,比如改成 “Second and Third changes in single commit",然後儲存退出,git就會把這兩個commit變成一個新的commit。做完後我們再用git log看一下,就會變成下圖

對比原始git log資訊,你就可以發現兩個commit被合成一個了。

同理,你可以將任意多個commit合併成一個 (第一個commit保持 pick, 後續commit改成 squash即可)