首页 > 解决方案 > git revert 引发冲突并且它不固定(不断显示(master|reverting))

问题描述

这个问题以前有人问过,但没有得到完整的答案,所以我再问一次。

当我试图恢复我的 git 提交历史中的一个提交时,发生了冲突,所以我尝试通过手动编辑冲突文件来解决这个问题。我保存了文件(使用 vim)并返回到 git bash。然后我尝试通过添加和提交编辑的文件来完成恢复过程。但我仍然(master|reverting)在我的提示符(user@123123 MINGW64 ~/Documents/library/Git/s1 (master|REVERTING))中看到。(master|reverting)我可以通过使用git revert --abortor摆脱git revert --skip(使用这两个命令忽略整个还原过程)但是当我使用时git revert --continue没有任何反应。在这一步中,当我运行时git status,git 会显示以下消息:

On branch master
You are currently reverting commit bbcf9a4.
  (all conflicts fixed: run "git revert --continue")
  (use "git revert --skip" to skip this patch)
  (use "git revert --abort" to cancel the revert operation)

nothing to commit, working tree clean

我很好奇为什么(master|reverting)会首先出现这种情况以及如何完成还原过程。

标签: gitgit-revert

解决方案


我怀疑,在解决了你的冲突之后,你最终得到了一个空的阶段和一个干净的工作树。

换句话说,您通过准确地编辑文件在恢复之前的状态来修复冲突。

是否git status为您提供以下屏幕?

On branch master
You are currently reverting commit e768305.
  (all conflicts fixed: run "git revert --continue")
  (use "git revert --skip" to skip this patch)
  (use "git revert --abort" to cancel the revert operation)

nothing to commit, working tree clean

如果是这样,你的舞台是空的,你的工作树是干净的;在空舞台上使用git commit什么都不做,以及使用git revert --continue(因为它在幕后进行提交)。

您可能只是跳过您的还原(使用git revert --skip,因为舞台是空的),或者创建一个空提交,git commit --allow-empty但这将毫无意义。


要务实地阻止 Git 说出“正在恢复”(并停止处于“正在恢复”状态),请删除该.git/REVERT_HEAD文件。


推荐阅读