2012-08-14 63 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

相关问题