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

All*_*len 3 git dvcs github

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

很长的故事:

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

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

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

seh*_*ehe 6

使用git-reflog

git reflog
Run Code Online (Sandbox Code Playgroud)

找到要返回的修订版本

git reset HEAD@{n}
Run Code Online (Sandbox Code Playgroud)

(用正确的数字代替n)

也许git reset --hard在那之后如果你有不洁净的工作树; 要小心,因为那些不可恢复)