错误:无法还原,因为您有未合并的文件。

18

尝试在git中还原特定提交时,我遇到了以下错误:

$ git revert aaaf93201a28a57d540d633b1b723b8e513a47ed
错误:由于您有未合并的文件,因此无法还原。
提示:在工作树中修复它们,然后使用“git add/rm”适当地标记解决方案并进行提交。
致命错误:还原失败

这是关于合并冲突吗?如果是这种情况,为什么会说“未合并的文件”?

4个回答

18
如果您想恢复到之前的工作状态,请执行以下操作:git merge --abort

2
谢谢。这是我情况下最简单的解决方案。 - Danny

3

按照历史顺序运用这些命令:

git reset --hard <commit-id>
git push -f origin <branch-name>

3

这是关于合并冲突的问题,可能是您之前尝试过的某次合并。未合并的文件就是发生合并冲突的文件。

根据错误信息所述,在继续其他操作之前,您需要处理这些文件和其中的冲突。另外一个选项是执行硬重置——只有当您知道自己在做什么时才能尝试。


9
虽然正确,但这似乎掩盖了我对Git的理解中存在的一个重大问题。当我尝试合并时出现冲突,我尝试还原“git revert HEAD”。我希望我所在的分支回到合并之前的状态。为什么合并冲突会有任何影响呢? - Dilapidus

-1
如果你运行: git status 它将输出类似于:
On branch <yourBranch>
You are currently reverting commit <HashID>.
  (fix conflicts and run "git revert --continue")
  (use "git revert --skip" to skip this patch)
  (use "git revert --abort" to cancel the revert operation)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   <fileModified>

Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
        both modified:   <fileUnmerged>

试着运行git status来更好地了解你的工作分支或环境发生了什么。

如状态所述,最好的选择是运行以下命令来清除之前的尝试:

git revert --abort

现在你可以像以前一样在你的分支上工作了。 最后有两个简单的选项。

  1. 接受回滚提交中的更改:

git revert <hashID> --strategy-option theirs

  1. 或者保留比回滚提交晚的更改:

git revert <hashID> --strategy-option ours

如果你对它的工作原理还有疑问,请参考:

git revert --help

1
根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接