我很困惑。我想回到之前在「git log」中確定的提交。Git:恢復到以前的提交狀態
但是當我做「git checkout」時,我沒有說commit。沒有什麼變化。 它告訴我我處於分離HEAD模式,但我想要的文件不在那裏。
我做錯了什麼?
MRB
我很困惑。我想回到之前在「git log」中確定的提交。Git:恢復到以前的提交狀態
但是當我做「git checkout」時,我沒有說commit。沒有什麼變化。 它告訴我我處於分離HEAD模式,但我想要的文件不在那裏。
我做錯了什麼?
MRB
git reset --hard <commit>
從手冊頁:
匹配工作樹和索引,以該樹被切換到。在工作樹中跟蹤文件的任何更改都會丟失。
git checkout
用於將您的工作目錄切換到不同的分支或提交。這不會在那裏移動HEAD
。
不要混帳重置 - 它是永久的!
請使用
git stash -u
,而不是!如果你在那裏有一塊工作不慎發生,你仍然可以恢復。除非您選擇這樣做,否則將永遠不會推送到您的遙控器,方法是將其從分支中取出並推出。您也可以使用git checkout
來完成同樣的事情。語法是
git checkout HEAD -- .
但它有和git reset --hard
一樣的問題。堅持藏匿,你將會挽救未來失去你的頭髮。
再回應
上述解決方案恢復所有的更改。但是,你問如何擺脫一些變化。我會補充完整性。
要做到這一點,你可以
git add file1 file2 file3
git stash save --patch
現在將提示正是你想要做什麼dissappear ...下來什麼都粒度級別的。因此,如果您選擇這樣做,您可以安全地「拒絕」對單個文件的少量更改。
此外,`reset`用於將您的索引和工作目錄重置爲以前的狀態。 `checkout`用於檢出新的或不同的分支。一旦你習慣了它,它並沒有那麼混亂。 =) – 2011-02-15 13:38:46
請查閱http://www.gitready.com/和http://learn.github.com/p/intro.html以獲取最新教程,然後訪問http://gitref.org以獲取參考信息,準備好了。 – 2011-02-15 13:40:48