Git合併多個 Commit

有的時候咱們在代碼提交時會提交不少次commit,每次只改一點點,代碼review起來和合並master都有必定的成本。 因此合併以前最後將本身分支的多個commit合併,這樣便於codereview。git

經過git log查看日誌日誌

經過rebase -i合併日誌code

咱們須要將 2dfbc7e8 和 c4e858b5 合併成一個 commit,那麼咱們輸入以下命令 blog

其中,-i 的參數指的是不須要合併的 commit 的 hash 值,這裏指的是第一條 commit不須要合併, 接着咱們就進入到 vi 的編輯模式hash

能夠看到其中分爲兩個部分:it

  • 上方未註釋的部分是填寫要執行的指令
  • 而下方註釋的部分則是指令的提示說明。

指令部分中由前方的命令名稱、commit hash 和 commit message 組成。ast

當前咱們只要知道 pick 和 squash 這兩個命令便可。im

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

咱們將 c4e858b5 這個 commit 前方的命令改爲 squash 或 s(能夠從上向下,除了第一個是p外其餘都改爲s),而後輸入:wq以保存並退出img

這是咱們會看到 commit message 的編輯界面,這個界面能夠設定一個新都commit message信息。註釋

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

輸入wq保存並推出, 再次輸入git log查看 commit 歷史信息,你會發現這兩個 commit 已經合併了。

rebase操做以後,能夠執行git push origin [分支] -f ,進行強制提交。

注意事項:

若是這個過程當中有操做錯誤,可使用 git rebase --abort來撤銷修改,回到沒有開始操做合併以前的狀態。

當咱們想撤銷rebase命令,能夠這樣:

git rebase --abort

相關文章
相關標籤/搜索