如何将不良更改回滚到本地git存储库?

时间:2011-04-17 18:59:51

标签: git github dvcs

我是git的新手,我遇到了一个大问题。即如果我做错了,如何将存储库恢复到良好状态。我已经看到如何使用'git revert'进行更改以撤消之前的更改,我已经阅读了很多关于stackoverflow和相关位置的问题,但我还没有找到一个简单的方法来简单地说“把我的本地存储库位回到它之前我做的X“其中X可能是提交,合并或其他存储库操作。

长篇故事:

今天,当我尝试按照Subtree Merging上的ProGit书中的步骤设置第三方依赖项(Jasmine)的子树分支时,这一点特别困难。我按照这些步骤设置了一个本地存储库,其中包含一个跟踪远程Jasmine存储库的分支。然后我使用read-tree将它连接到我的probject中的子目录,一切都很好。不幸的是,Jasmine分支包含一个非公共URL的子模块引用,当我尝试解决这个问题时,我在跟踪远程存储库的分支上进行了更改(和提交)。无论我做了什么来试图恢复这些提交/更改,我的'git push'命令都不能再工作了,因为存储库认为我对Jasmine代码进行了更改,并试图将它们推回到我正在跟踪的公共URL

总结:在我发出由我的git新手状态引起的命令之前,我搞砸了部分存储库并无法弄清楚如何将其恢复到原始状态。

无论如何要回滚整个存储库一些提交/更改,还是我只需要再次克隆它并在发生这种情况时重新开始?

1 个答案:

答案 0 :(得分:6)

使用git-reflog

git reflog

找到要返回的修订

git reset HEAD@{n}

(用适当的数字代替n)

如果你有不干净的工作树,也许git reset --hard之后;要非常小心,因为那些无法恢复)