You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git新手使用git revert遇冲突:CONFLICT deleted in empty tree and modified in HEAD

问题分析与解决

操作错误原因

你用git revert HEAD~1的目标选错了。HEAD~1指向的是第一个提交(添加"first line"的那次),Git revert这个提交的逻辑是撤销该提交的操作——也就是删除test.txt(因为第一个提交是创建并添加了这个文件)。但当前你的最新提交(HEAD)里test.txt已经被修改添加了第二行,Git无法自动判断是要删除还是保留修改,所以触发了冲突。

你的需求是回到test.txt仅含第一行的状态,本质是要撤销第二个提交(添加"second line"的那次),这个提交对应的是HEAD,而非HEAD~1。

正确实现步骤

方法1:直接执行正确的revert(未进入错误revert流程时)

如果还没执行之前的错误revert,直接运行:

git revert HEAD

这个命令会创建一个新提交,反转第二个提交的操作——移除test.txt中的第二行,最终test.txt仅保留第一行,同时完整保留提交历史。

方法2:终止错误revert流程后再操作

如果你已经处于REVERTING状态,先终止当前流程:

git revert --abort

然后执行正确的revert命令:

git revert HEAD

可选:用重置方式(适合本地未推送分支)

若不需要保留第二个提交的历史,也可以用git reset(注意:该操作会修改提交历史,分支已推送到远程仓库时禁止使用):

git reset --hard HEAD~1

执行后分支指针直接回退到第一个提交,工作区和暂存区同步到该状态,test.txt就只剩第一行。

为什么git add test.txt无效?

你当时在执行的是“反转第一个提交(删除test.txt)”的操作,Git期望你解决“删除文件”与“当前修改文件”的冲突。git add test.txt相当于告诉Git“保留当前修改的test.txt,放弃删除操作”,这和你要回退到第一行的需求不符,因此Git不会结束revert流程——你并没有完成“反转第一个提交”的目标。

内容的提问来源于stack exchange,提问作者Vinicius Alves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:20:13