2013-04-02 46 views
1

我所做的:可以在Git中“撤消”我最后的“撤消”吗?

git reset --soft ^HEAD 
时,我想我真正的意思

git reset --soft HEAD 

现在,所有我一天的工作是 “水涨船高”。是否有可能搬回了阶梯捕捉到今天我

我之所以做了复位是因为最初我:

git commit -a -m "xyz" 

代替:

git commit -m "xyz" 
+0

您是否试过[this](http://stackoverflow.com/questions/2510276/undoing-git-reset)或[this](http://stackoverflow.com/questions/5473/undoing-a-git -reset-硬头像1)? –

+0

是的。但不幸的是,当我采取这一行动时,它显示了我在逆转中的变化!所以我的代码在* git中的某处*,而不是我需要它的地方。我想没有办法把精灵放回瓶子里,至少不是没有计算机科学家。 – AKWF

回答

4

git reflog被围绕着所有美妙的混乱疯狂的安全网。您可以使用它来查找您的“撤消”之前提交的哈希,检查该分支(安全),然后从那里恢复您的工作树。

更多细节here

+0

看起来我是没有评论的downvoted。如果有更好的方式去做事,我会很感激的。) –

0

使用git-reflog

git reflog 
# find SHA of commit which you "lost" 
git reset --hard SHA 

找到确切承诺可能会非常棘手,但你可以检查与git show的引用日志每次提交。

+0

我最初做了一个“git reset --soft”。我已经设法回到我能够“看到”我的变化的地方,但他们都是倒退的。换句话说,它们不在文件中。 “git status”显示了我的下一个提交,基本上取消了我以前的一切。 – AKWF

+1

假设您在某些时候将您的更改添加到git中,您将能够在reflog中看到它们(假设gc尚未运行)。每当你做一个提交或添加,reflog向前移动...所以你应该总是能够回到你原来的位置。 – brianz