場景:新功能在本地的dev_feat分支開發過程中,提交了多次,生成了多個commit id,開發測試完成后將新功能合並到dev分支上,但是不想要這些提交記錄,那么可以將多個commitid合並成一個,再merge或者push到dev分支上。
比如git log 看到以下三個提交:
前面說過 commit 是為了防止意外丟失代碼,但是在推到遠端之前,最好把一次開發的 commit 合並成一個,避免污染遠端的 git commit message
前面說過 commit 是為了防止意外丟失代碼,但是在推到遠端之前,最好把一次開發的 commit 合並成一個,避免污染遠端的 git commit message
因為這個例子中有3個 commit,所以執行 git rebase -i HEAD~3
然后就會看到一個 vim 界面 (不熟悉 vim 基礎操作的讀者請自行查閱搜索)
記住不要動最上面的那行,把下面幾行開頭的 pick 換成 s , 然后保存
這時會顯示另一個 vim 界面
刪除所有內容( #開頭的可以忽略),然后寫一句簡短、准確的句子作為這次開發的 commit message,如
然后保存
如果成功了就能看見這么一些文字
最后使用 git logl 確認所有這次開發中的 commit message 都被壓縮成了一個
(這邊只介紹了 git rebase的最簡單直接的用法,有興趣的讀者可以去閱讀官方文檔,了解更詳細、高級的用法,如第一次vim界面里使用 f 替代 s 有時候更方便)
參考: