卡在 git 还原 --中止冲突

  • 本文关键字:冲突 git 还原 卡在 git
  • 更新时间 :
  • 英文 :


所以这是我最新的 3 个提交

提交 cb5f9f58885049c20ea7d75e3fcc120f61f6d9a1提交 bad20788aa8b72622182cf28195b4b4e518d44a3提交 eeb8a571e300b52cd0c200351872467c47a32214

我想恢复 bad207~ 提交(哦,讽刺),所以我运行:

git revert bad20788aa8b72622182cf28195b4b4e518d44a3

存在冲突,bad207 和 cb5f 接触同一个文件:

You are currently reverting commit bad2078.
  (fix conflicts and run "git revert --continue")
  (use "git revert --abort" to cancel the revert operation)

所以我修复了冲突并运行:

git add conflicted_file

然后:

git revert --continue

哪些输出(在西班牙语中,这意味着,在分支主服务器上,您的分支使用源/主更新):

En la rama master
Su rama está actualizada con «origin/master».
You are currently reverting commit bad2078.
nothing to commit, working directory clean

然后我卡住了,我无法推动任何东西,或者提交任何东西,我仍然处于恢复模式:

$ git push origin master
Everything up-to-date
$ git commit -a
En la rama master
Su rama está actualizada con «origin/master».
You are currently reverting commit bad2078.
nothing to commit, working directory clean
$ git status
En la rama master
Su rama está actualizada con «origin/master».
You are currently reverting commit bad2078.
  (todos los conflictos corregidos: ejecute «git revert --continue»)
  (use "git revert --abort" to cancel the revert operation)
$ git revert --continue
En la rama master
Su rama está actualizada con «origin/master».
You are currently reverting commit bad2078.
nothing to commit, working directory clean

没有什么可提交的,工作目录干净,我错过了什么?

解决冲突后,revert提交包含更改。

因此,您无法继续,因为默认情况下git会阻止创建空提交。

您可以:

  1. 尝试--allow-empty参数,但我看不出这对您有什么用处。
  2. 通过运行 git revert --abort 取消创建还原提交。然后手动创建还原提交(只需手动进行更改)。
  3. 尝试将提交变基以恢复为位于提交日志之上。您尝试还原的提交很可能不是最新的。因此,将其放在顶部将允许您创建没有任何冲突的还原。
  4. 就像上一个选项中的变基一样,但只需将其从分支历史记录中删除即可。

最后两个选项会弄乱分支历史记录,因此如果其他人正在处理此分支,那么在变基/合并时可能会遇到问题。

如果你的冲突解决文件看起来和当前头部的文件完全一样,那么 git 认为你不会有任何要提交的更改,因此你不能继续你的恢复。

如果你真的想把这个恢复提交添加到你的分支中,那么你可以用一种微不足道的方式修改你的冲突解决文件,例如注释中的额外空格,以欺骗 git 允许你完成恢复提交。

但实际上,如果您的冲突解决文件看起来与当前头部完全相同,那么您可能不需要首先执行 git 还原。 你的头已经是你想要的了。 所以只需中止还原:git 还原 --abort

有同样的问题,这是因为我试图恢复多次提交的原因,我的解决方案是将所有内容批量恢复到我想要的实际提交并恢复我需要的任何文件

中止了我正在尝试的上一次还原,使用这个:

git revert --abort

用:

git revert --no-commit HEAD~<NUMBER_OF_COMMIT_AWAY>..HEAD

这会还原,但会在工作树上留下或更改然后,您可以使用:

git restore <FILE>

恢复您需要的内容

最新更新