放弃Git变化的正确方法

时间:2012-08-14 18:43:18

标签: git branch rollback git-reset

我已经看到许多不同的方法可以使用Git丢弃更改/恢复到之前的提交。我通常可以找出哪些适用于我的情况,但在这个过程中我对不同的方法感到很困惑。最近我试图撤消一些文件重命名,无论我怎么努力git checkout文件的旧版本,我仍然无法恢复旧文件。

我正在寻找有关使用哪种方法及其原因的说明。以下是我对一些方法的理解。我意识到答案可能非常具有上下文性,但我想尝试找出哪些上下文需要哪种方法。


1) git checkout -- .

  • 用于检出最新版本的文件,将覆盖旧文件,但不会影响已删除,重命名或新文件。

2) git stash save --keep-index ,然后是 git stash drop

  • 存储未提交的文件,然后完全删除它们。如果您已提交要保留的更改以及要丢弃的未提交/未暂存的更改,那么这是一种很好的方法。

3)的 git reset --hard

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

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

来源帖子:

1 个答案:

答案 0 :(得分:9)

git stash -u

是首选方式。不要掉下来。他们不会被推。如果您确实发现了一些重要的东西,那么您可以将它们取回。

你的其他选择具有破坏性。

Revert正在为历史记录添加一个新提交,该提交应用与提交引入的修补程序相反的历史记录。您在此处的选择是针对您希望如何处理工作树中尚未成为历史记录的更改。还原是针对作为历史记录一部分的已提交更改。