这是我的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
什么都没提交,工作目录干净,我缺少什么?
答案 0 :(得分:1)
有同样的问题,这是因为我试图恢复多个提交,我的解决方案是批量恢复到我想要的实际提交并恢复我需要的任何文件
我使用这个中止了我之前尝试的还原:
git revert --abort
使用:
git revert --no-commit HEAD~<NUMBER_OF_COMMIT_AWAY>..HEAD
这会恢复,但会在您的工作树上留下或您的更改 然后你可以使用:
git restore <FILE>
恢复你需要的东西
答案 1 :(得分:0)
解决冲突后,revert
提交包含更改。
因此您无法继续,因为默认情况下git
会阻止创建空的提交。
您可以:
--allow-empty
参数,但我认为这对您没有用。git revert --abort
取消创建还原提交。然后手动创建一个还原提交(只需手动进行更改即可)。最后两个选项将与分支历史混淆,因此,如果其他人正在该分支上工作,则在重新定基础/合并时可能会遇到问题。
答案 2 :(得分:0)
如果您已解决冲突的文件看上去与当前文件完全相同,则git认为您没有任何更改要提交,因此您无法继续还原。
如果您确实希望将此还原提交添加到您的分支中,则可以用一种微不足道的方式修改已解决冲突的文件,例如在注释中留出额外的空间,以欺骗git允许您完成还原提交。
但是实际上,如果您已解决冲突的文件看上去与当前文件完全一样,那么您可能不需要首先进行git revert。你的头已经是你想要的。因此,只需中止还原: git revert --abort