1 回答

TA貢獻1827條經驗 獲得超9個贊
用rebase -i
比如下圖的commit 歷史,想要把 "Second change" 和 "Third change" 這兩個commit合并到一起
那么可以
1git 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即可)
- 1 回答
- 0 關注
- 1988 瀏覽
添加回答
舉報