場景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