Git撤销变更时保留后续变更集的问题(Visual Studio场景)
Git Revert冲突解决:保留
WriteNumbers(100,4);仅删除WriteNumbers(100,3); 这是Git revert时的合并冲突场景,既不是你对revert的理解有误,也不是Visual Studio的异常操作。原因是你在添加WriteNumbers(100,3);后,又在相邻位置添加了WriteNumbers(100,4);,Git自动合并时无法判断如何保留后者,所以VS只给出了“全删”或“全留”的快速选项,但你可以通过手动解决冲突实现需求。
解决方法一:在Visual Studio内处理
- 当VS弹出冲突选项时,选择**「解决冲突」**(不要选删除两行或保留两行)
- 在冲突编辑器中,找到带有冲突标记的代码块(类似下面的格式):
<<<<<<< HEAD WriteNumbers(100, 3); WriteNumbers(100, 4); ======= // 此处为revert目标提交前的代码(即没有3那行) >>>>>>> [被revert的提交哈希] - 手动修改代码,只保留
WriteNumbers(100, 4);,删除冲突标记和WriteNumbers(100, 3); - 保存文件后,标记冲突已解决,完成revert提交即可
解决方法二:用Git命令行操作
- 打开终端,切换到仓库所在目录
- 执行revert命令,替换
<commit-hash>为引入WriteNumbers(100,3);的提交哈希:git revert <commit-hash> - 此时Git会提示冲突,打开对应代码文件,手动删除
WriteNumbers(100,3);和所有冲突标记(<<<<<<<、=======、>>>>>>>) - 执行以下命令完成revert:
git add <修改后的文件名> git revert --continue - 若中途想放弃revert操作,执行:
git revert --abort
你的核心理解是对的:revert引入WriteNumbers(100,3);的提交后,确实应该保留WriteNumbers(100,4);,只是两次提交的代码位置太接近触发了自动合并冲突,需要手动介入调整。
内容的提问来源于stack exchange,提问作者LukaMrko
相关产品推荐
相关产品推荐

