你想撤销已经处理过的冲突解决(比如解决错了、想重新处理),核心思路是让冲突文件回到「未解决冲突」的原始状态,Git 提供了明确的命令来实现这个需求,下面分「已执行 git add 标记解决」和「仅手动修改但未 add」两种场景给出具体操作:
先执行 git status 确认当前状态,冲突文件的状态会决定用哪种撤销方式:
- 若文件标为
both modified(未 add):仅手动改了冲突但没标记解决;
- 若文件标为
Changes to be committed(已 add):已执行 git add 标记冲突解决。
这种情况只需放弃对冲突文件的手动修改,让文件回到冲突发生时的原始状态(保留 <<<<<<</=======/>>>>>>> 冲突标记):
- 作用:用 Git 暂存区的版本覆盖工作区的修改,直接回到冲突未解决的状态;
- 注意:
-m 是为了避免文件路径和分支名冲突,建议必加。
如果已经执行了 git add . 或 git add <文件> 标记冲突解决,需要先撤销暂存区的修改,再恢复冲突文件:
- 作用:把已暂存的冲突文件拉回「未合并(unmerged)」状态,
git status 会重新显示 both modified。
git checkout -m src/utils.py
执行后,文件会回到冲突刚发生时的样子(保留冲突标记),你可以重新手动解决冲突。