天天看點

git revert 一次性回退多個送出

轉載:https://blog.csdn.net/qq_35008279/article/details/86316819

  1. git log 檢視目前狀态

可以看到我目前狀态有四個送出,最初的送出 + 三次送出。現在想用git revert回退這三次送出,但是我們知道git revert是用一次新的送出回退之前的送出,是以我回退三次,就會有三個新的送出,但是我又想隻增加一個新的送出,繼續看。

  1. git revert回退依次三個送出

可以看到執行完三次回退後,又新增了三次送出,現在想将這三次送出合并成一個。

  1. git rebase合并多次commit

    我們想将最近的三個送出合并,首先需要如下指令:

其中,-i 的參數是不需要合并的 commit 的 hash 值,這裡即從目前時間往前推的第四個送出, 接着我們就進入到 vi 的編輯模式。

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

目前我們隻要知道兩個指令: pick 和 squash

pick 的意思是要會執行這個 commit

squash 的意思是這個 commit 會被合并到前一個commit

我們将 9ee35f2 和 5eb5678 這兩個 commit 前方的指令改成 squash 或 s,然後輸入:wq以儲存并退出

這時我們會看到 commit message 的編輯界面

其中, 非注釋部分就是三次的 commit message, 我們要做的就是将這三個修改成一個新的 commit message。

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

然後 push 就好啦~

參考:「Git」合并多個 Commit

Git: Allow-empty When Squashing