2012-06-13 37 views
0

我經常使用「git stash」和「git stash pop」來保存和恢復工作樹中的更改。這就是我所做的,我以前未提交的更改現在都消失了。Git恢復合併後保存更改--no-ff

git stash -u 
git checkout master 
git pull --rebase 
git checkout dev 
git merge --no-ff master 
10 files changed, 1000 insertions(+), 2000 deletions(-) 
git stash pop 
CONFLICT (content): Merge conflict in file.ext 

然後,我想我可以恢復的合併,我所做的:

git reset --hard origin/master 
git reset --hard origin/master 

現在,我看不出有任何的我以前藏匿提交的修改隨時隨地file.ext,只有合併代碼。我怎樣才能恢復我原來隱藏的所有變化?

回答

3

當您pop關閉stash時,它也將其從stash中刪除。所以這些隱藏的變化被轉移回你的工作目錄。然後,當你reset,你恢復了這些相同的變化。

git reset --hard是少數幾個危險的「你可能完全失去工作」的命令之一。 This很好地解釋了reset的不同方面。

綜上所述,他們不在stash了,而你在reset的工作目錄下。所以它們很可能會丟失在比特和字節之前。雖然這些更改曾經隱藏過,但您可以通過git fsck --lost-found找到提交。

+0

謝謝,學習辛苦的方式... – user43092

+0

值得一提的是,有... –