卡在git revert上–因冲突中止

时间:2019-01-18 10:11:23

标签: 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

什么都没提交,工作目录干净,我缺少什么?

3 个答案:

答案 0 :(得分:1)

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

我使用这个中止了我之前尝试的还原:

git revert --abort

使用:

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

这会恢复,但会在您的工作树上留下或您的更改 然后你可以使用:

git restore <FILE>

恢复你需要的东西

答案 1 :(得分:0)

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

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

您可以:

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

最后两个选项将与分支历史混淆,因此,如果其他人正在该分支上工作,则在重新定基础/合并时可能会遇到问题。

答案 2 :(得分:0)

如果您已解决冲突的文件看上去与当前文件完全相同,则git认为您没有任何更改要提交,因此您无法继续还原。

如果您确实希望将此还原提交添加到您的分支中,则可以用一种微不足道的方式修改已解决冲突的文件,例如在注释中留出额外的空间,以欺骗git允许您完成还原提交。

但是实际上,如果您已解决冲突的文件看上去与当前文件完全一样,那么您可能不需要首先进行git revert。你的头已经是你想要的。因此,只需中止还原: git revert --abort