执行git revert产生合并冲突应接受当前更改还是传入更改及原因?
Git revert 合并冲突选择规则
你当前的提交链为 A <- B <- C <- D <- E <- HEAD,按从新到旧顺序撤销D、B时出现的冲突,可按以下规则判断选择:
执行git revert --no-commit D时出现冲突
- 当前更改:对应撤销操作前的HEAD状态,也就是E提交的完整内容
- 传入更改:对应Git为撤销D生成的反向修改,目的是将D改动的内容还原到C提交的状态
这种场景下除非你明确要保留D的部分修改,否则直接选择传入更改即可完成D的撤销。
执行git revert --no-commit B时出现冲突
- 当前更改:对应已经完成D撤销后的工作区状态
- 传入更改:对应Git为撤销B生成的反向修改,目的是将B改动的内容还原到A提交的状态
这种场景下分两种情况处理: - 冲突内容和D的修改无关:直接选择传入更改即可
- 冲突内容是B、D修改了同一块代码导致的:手动编辑冲突文件,保留C、E提交的改动,移除B、D的改动即可
最终校验
冲突处理完成后,可执行git diff检查最终内容,确认B、D的改动都被移除,C、E的改动完整保留后,再执行git commit完成整个撤销操作。
内容的提问来源于stack exchange,提问作者David Beltran
相关产品推荐
相关产品推荐

