問題
在開發過程中發現分支中間某次merge存在dev代碼,需要把這個merge去掉,但不影響後續的提交
解決方案
坑點:網上說用【git revert】來實現,發現裏面有個坑點,revert之後,假如想在後續再加入這個merge分支就不行,因爲系統默認你已經合併過了,導致分支代碼沒法再次合併,超級麻煩
- 用【git reset】回到出錯版本的上一個版本
git reset --hard 3c2af5a7
- 用【git cherry-pick】把出錯版本後面的commit合併進去
git cherry-pick 9dba07f4^..32aba548 ##出錯版本後的第一個commit直至最新commit
或者使用單次合併
git cherry-pick 9dba07f4
- 如果在cherry-pick 的過程中出現了衝突
在處理衝突後,使用
git cherry-pick --continue
繼續處理下一個分支
如果想中途退出cherry-pick,使用
git cherry-pick --abort
- 合併衝突後,使用強制推送把舊分支進行覆蓋
git push origin HEAD:comitName --force
引用:
https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
https://www.jianshu.com/p/08c3f1804b36