2012-08-14 61 views
9

我見過很多不同的方法來丟棄更改/恢復到以前使用Git提交。我通常可以找出適合自己情況的工具,但在這個過程中,我對這種不同的方法感到困惑不解。最近我試圖撤銷一些文件重命名,無論我多麼努力地嘗試git checkout舊版本的文件,我仍舊無法恢復舊文件。正確的方式來放棄Git中的變化

我正在尋找說明使用哪種方法以及爲什麼。這是我對幾種方法的理解。我意識到答案可能非常有關聯性,但我想嘗試理清哪些上下文需要哪些方法。


1)git checkout -- .

  • 用於檢出最新版本的文件,會覆蓋舊文件,但不會影響刪除,重命名,或新的文件。

2)git stash save --keep-index隨後git stash drop

  • 藏匿未提交的文件,然後丟棄它們完全。如果您已經提交了想要保留的更改並且您想要放棄的未提交/未擱置更改,那麼這種方法很好。

3)git reset --hard

  • 消滅了一切,因爲最後一次提交,包括文件重命名,刪除和補充。

這是我目前的我的選擇的理解。你會對我的解釋做出什麼改變嗎?我也不確定何時使用git revert代替上述命令。

源帖子:

回答

9
git stash -u 

是優選的方式。不要下降。他們不會被推。如果你做了一些你發現很重要的事情,你可以讓他們回來。

您的其他選擇具有破壞性。

Revert正在向提交已引入的修補程序的相反的歷史添加新的提交。您在這裏的選擇是針對您的工作樹中尚未成爲歷史組成部分的變更所要做的。還原是作爲歷史的一部分的已提交的更改。

+0

-u做什麼?我真的不想用我不需要的代碼填充我的存儲堆棧。 – 2012-08-15 19:29:34

+0

不要擔心填滿你的藏身之處。 '-u'除了跟蹤的文件之外還存儲未跟蹤的文件。它允許它表現得像重置一樣。 – 2012-08-16 16:56:27

相關問題