如何在不使用重置的情况下将Git repo及其Github remote恢复到以前的提交?
我在Github上有一个Git repo和一个遥控器。(请不要删掉它在Github上的事实。它是相关的,并且会对答案产生影响。谢谢。) 我想将主分支恢复到返回的状态 我不想使用如何在不使用重置的情况下将Git repo及其Github remote恢复到以前的提交?,git,github,Git,Github,我在Github上有一个Git repo和一个遥控器。(请不要删掉它在Github上的事实。它是相关的,并且会对答案产生影响。谢谢。) 我想将主分支恢复到返回的状态 我不想使用git--reset hard…和git push-f,因为我不想删除历史记录 有什么方法可以让我告诉Git,有效地 “使我的工作副本中的所有内容与上次在此提交的内容完全相同,包括删除当时不存在的文件。” …然后提交该状态,然后将其推送到远程 我尝试了git revert,但结果如下 $ git revert --no-
git--reset hard…
和git push-f
,因为我不想删除历史记录
有什么方法可以让我告诉Git,有效地
“使我的工作副本中的所有内容与上次在此提交的内容完全相同,包括删除当时不存在的文件。”
…然后提交该状态,然后将其推送到远程
我尝试了git revert,但结果如下
$ git revert --no-commit d3289a7ab82fd76386d99bdd2c5e6496ecc62529..
error: Commit e88336ec528bc87dd6df3df82280b0fbd8c5a38d is a merge but no -m option was given.
fatal: revert failed
然后尝试
$ git revert -m 1 --no-commit d3289a7ab82fd76386d99bdd2c5e6496ecc62529..
error: Mainline was specified but commit 84ccf1084d17d470ee03b89a7649c4a783f2b914 is not a merge.
fatal: revert failed
是的,您可以(从顶级目录)执行以下操作:
git revert--不提交。。
然后按正常方式提交并推送
请注意,您可以使用git checkout--.获得类似的结果,但这不会删除自相关提交后添加的文件。
git revert
当然是更快的方法,但值得一提的是,git reset
比--hard
更灵活:
git reset --hard $commit
git reset --soft '@{1}'
git commit
这意味着:
$commit
。使索引和工作副本看起来像$commit
$commit
。这将为您提供恢复到$commit
所需的任何更改这听起来很有希望。但我想撤销最后25次提交。我认为
revert
只还原用作参数的单个提交中的更改。我弄错了吗?等等。我明白了,。
。谢谢。我试过这个。代码没有返回到指定的“还原为提交”时的状态。您能说得更具体一些吗?我只对任意回购做了一个简单的测试,如果我对reset
的理解不正确,我肯定想知道:)我检查了代码,从变量名等可以看出它没有处于预期状态。我可能犯了一个错误。
git reset --hard $commit
git reset --soft '@{1}'
git commit