git,如何 撤銷某一次歷史提交或merge,並保留該版本的后續提交?


場景1:

  你有兩個功能迭代版本的分支,一個是 15 號上線,一個是25號上線。5號的時候產品突然說,這兩個版本一起上,然后你耿直的把25號版本merge到了15號版本。

幾天后產品說:“一起上有問題,我們還是分開上吧”。這個時候你發現merge之后又提交了很多15號版本的代碼,需要撤銷那次merge並且保留后面的提交。

 

場景2:

  所有人共用 test 分支,有五個人都在這上面合並了自己的代碼,結果有天 A 不小心把 develop 分支合並到了 test,過了一會 A 發現,並且想撤回的時候,發現再次期間,有好幾個人都提交了代碼。所以不能用reset,而是需要撤銷merge並且保留后面更改。

 

有兩種辦法:

一、git rebase 變基

git log 找到那個merge的commitId

git rebase -i commitID   

將這個commitID前面的pick改為d   

保存並退出   

如果沖突,先解決然后 git rebase --continue

如果想撤銷整個操作 git rebase --abort

多人協作時,不要用變基,commit 會造成混亂,出現很多兩次的commit 信息

 

二、git revert

git revert -m 1 commitId

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM