「Git」合併多個 Commit

峻峰飛陽發表於2017-10-11

在使用 Git 作為版本控制的時候,我們可能會由於各種各樣的原因提交了許多臨時的 commit,而這些 commit 拼接起來才是完整的任務。那麼我們為了避免太多的 commit 而造成版本控制的混亂,通常我們推薦將這些 commit 合併成一個。

首先假設我們有3個 commit


git-log-origin.png

我們需要將 2dfbc7e8c4e858b5 合併成一個 commit,那麼我們輸入如下命令


git-rebase-i.png

其中,-i 的引數是不需要合併的 commit 的 hash 值,這裡指的是第一條 commit, 接著我們就進入到 vi 的編輯模式


git-rebase-edit.png

可以看到其中分為兩個部分,上方未註釋的部分是填寫要執行的指令,而下方註釋的部分則是指令的提示說明。指令部分中由前方的命令名稱、commit hash 和 commit message 組成。

當前我們只要知道 picksquash 這兩個命令即可。

  • pick 的意思是要會執行這個 commit
  • squash 的意思是這個 commit 會被合併到前一個commit

我們將 c4e858b5 這個 commit 前方的命令改成 squashs,然後輸入:wq以儲存並退出


git-rebase-squash.png

這是我們會看到 commit message 的編輯介面


git-rebase-commit-message.png

其中, 非註釋部分就是兩次的 commit message, 你要做的就是將這兩個修改成新的 commit message。


git-rebase-commit-message-combination.png

輸入wq儲存並推出, 再次輸入git log檢視 commit 歷史資訊,你會發現這兩個 commit 已經合併了。


git-rebase-log-new.png

注意事項:如果這個過程中有操作錯誤,可以使用 git rebase --abort來撤銷修改,回到沒有開始操作合併之前的狀態。



作者:_Ryeeeeee
連結:http://www.jianshu.com/p/964de879904a
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

相關文章