問(wèn)題
在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)分支中間某次merge存在dev代碼,需要把這個(gè)merge去掉,但不影響后續(xù)的提交
解決方案
坑點(diǎn):網(wǎng)上說(shuō)用【git revert】來(lái)實(shí)現(xiàn),發(fā)現(xiàn)里面有個(gè)坑點(diǎn),revert之后,假如想在后續(xù)再加入這個(gè)merge分支就不行,因?yàn)橄到y(tǒng)默認(rèn)你已經(jīng)合并過(guò)了,導(dǎo)致分支代碼沒(méi)法再次合并,超級(jí)麻煩
- 用【git reset】回到出錯(cuò)版本的上一個(gè)版本
git reset --hard 3c2af5a7
- 用【git cherry-pick】把出錯(cuò)版本后面的commit合并進(jìn)去
git cherry-pick 9dba07f4^..32aba548 ##出錯(cuò)版本后的第一個(gè)commit直至最新commit
或者使用單次合并
git cherry-pick 9dba07f4
- 如果在cherry-pick 的過(guò)程中出現(xiàn)了沖突
在處理沖突后,使用
git cherry-pick --continue
繼續(xù)處理下一個(gè)分支
如果想中途退出cherry-pick,使用
git cherry-pick --abort
- 合并沖突后,使用強(qiáng)制推送把舊分支進(jìn)行覆蓋
git push origin HEAD:comitName --force
引用:
https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
http://www.itdecent.cn/p/08c3f1804b36