放弃Git中更改的正确方法

放弃Git中更改的正确方法,git,branch,rollback,git-reset,Git,Branch,Rollback,Git Reset,我见过许多不同的方法,可以使用Git放弃更改/恢复到以前的提交。我通常能找出适合我的情况的方法,但在这个过程中,我被不同的方法弄糊涂了。最近,我试图撤销一些文件重命名,无论我多么努力地git checkout文件的旧版本,我仍然无法取回我的旧文件 我正在寻找关于使用哪种方法以及为什么的澄清。以下是我对几种方法的理解。我意识到答案可能与上下文有关,但我想尝试找出哪些上下文需要哪些方法 1) git签出--. 用于签出文件的最新版本,将覆盖旧文件,但不会影响已删除、重命名或新文件 2) git

我见过许多不同的方法,可以使用Git放弃更改/恢复到以前的提交。我通常能找出适合我的情况的方法,但在这个过程中,我被不同的方法弄糊涂了。最近,我试图撤销一些文件重命名,无论我多么努力地
git checkout
文件的旧版本,我仍然无法取回我的旧文件

我正在寻找关于使用哪种方法以及为什么的澄清。以下是我对几种方法的理解。我意识到答案可能与上下文有关,但我想尝试找出哪些上下文需要哪些方法


1)
git签出--.

  • 用于签出文件的最新版本,将覆盖旧文件,但不会影响已删除、重命名或新文件
2)
git stash save——保留索引,然后是
git stash drop

  • 隐藏未提交的文件,然后完全删除它们。如果您有要保留的已提交更改和要放弃的未提交/未老化更改,那么这是一种很好的方法
3)
git重置——硬的

  • 清除自上次提交以来的所有内容,包括文件重命名、删除和添加

这是我目前对我的选择的理解。你对我的解释有什么改变吗?我也不确定何时使用
git revert
来代替上述命令

来源帖子:

是首选的方式。不要掉下去。他们不会被推。万一你发现了什么重要的东西,你可以把它们找回来

你的其他选择是毁灭性的


Revert是在历史记录中添加一个新的提交,该提交与提交引入的修补程序相反。您在这里的选择是为了处理尚未成为历史一部分的工作树中的更改。“还原”用于提交的更改,这些更改是历史记录的一部分。

u做什么?我真的不想用我不需要的代码填满我的存储堆栈。不要担心填满你的存储
-u
除了跟踪的文件外,还隐藏未跟踪的文件。它允许它像重置一样工作。
git stash -u