Git中放弃更改的正确方法

10
我看到了许多使用Git丢弃更改/恢复到先前提交的不同方法。通常情况下,我可以找出适合我的情况的方法,但在这个过程中,我对不同的方法感到很困惑。最近,我试图撤消一些文件重命名,无论我如何尝试git checkout旧版本的文件,我仍然无法找回我的旧文件。
我正在寻找哪种方法以及为什么要使用它的澄清。以下是我对一些方法的理解。我知道答案可能非常具体化,但我想尝试整理哪些情况需要哪些方法。
1)git checkout -- .
  • 用于检出文件的最新版本,将覆盖旧文件,但不会影响已删除、重命名或新文件。
2)git stash save --keep-index 然后 git stash drop
  • 储藏未提交的文件,然后完全删除它们。如果您已经提交了要保留的更改和未提交/未暂存的更改,则是一个好方法丢弃它们。
3)git reset --hard
  • 抹掉自上次提交以来的所有内容,包括文件重命名、删除和添加。
这是我目前对我的选择的理解。你会对我的解释做出任何更改吗?我也不确定何时应该使用git revert来代替上述命令。
来源帖子:
1个回答

9
git stash -u

首选方法是使用git revert,不要删除任何东西。这样可以避免数据丢失。如果你意外地删除了一些重要的内容,你可以通过revert找回它们。

其他选择会造成破坏性影响。

还原是向历史记录中添加一个新的提交,应用与某个提交相反的补丁。在这里,你可以选择如何处理尚未成为历史记录一部分的工作目录中的更改。还原适用于已经提交并成为历史记录一部分的更改。


“-u” 是什么意思?我真的不想用不需要的代码填满我的存储栈。 - Kyle Clegg
不用担心填满你的存储空间。-u 除了已跟踪的文件外,还会存储未跟踪的文件。这使它的行为类似于重置。 - Adam Dymitruk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接