9
我见过很多不同的方法来丢弃更改/恢复到以前使用Git提交。我通常可以找出适合自己情况的工具,但在这个过程中,我对这种不同的方法感到困惑不解。最近我试图撤销一些文件重命名,无论我多么努力地尝试git checkout
旧版本的文件,我仍旧无法恢复旧文件。正确的方式来放弃Git中的变化
我正在寻找说明使用哪种方法以及为什么。这是我对几种方法的理解。我意识到答案可能非常有关联性,但我想尝试理清哪些上下文需要哪些方法。
1)git checkout -- .
- 用于检出最新版本的文件,会覆盖旧文件,但不会影响删除,重命名,或新的文件。
2)git stash save --keep-index
随后git stash drop
- 藏匿未提交的文件,然后丢弃它们完全。如果您已经提交了想要保留的更改并且您想要放弃的未提交/未搁置更改,那么这种方法很好。
3)git reset --hard
- 消灭了一切,因为最后一次提交,包括文件重命名,删除和补充。
这是我目前的我的选择的理解。你会对我的解释做出什么改变吗?我也不确定何时使用git revert
代替上述命令。
源帖子:
- Can't seem to discard changes in Git
- How do I discard unstaged changes in Git?
- GIT Discard any changes I've made to a branch
-u做什么?我真的不想用我不需要的代码填充我的存储堆栈。 – 2012-08-15 19:29:34
不要担心填满你的藏身之处。 '-u'除了跟踪的文件之外还存储未跟踪的文件。它允许它表现得像重置一样。 – 2012-08-16 16:56:27