2013-04-02 242 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