10

我见过许多使用 Git 丢弃更改/恢复到先前提交的不同方法。我通常可以弄清楚哪种方法适合我的情况,但在此过程中,我对不同的方法感到非常困惑。最近我试图撤消一些文件重命名,无论我多么努力地尝试git checkout旧版本的文件,我仍然无法恢复我的旧文件。

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


1)git checkout -- .

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

2)git stash save --keep-index其次是git stash drop

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

3)git reset --hard

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

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

来源帖子:

4

1 回答 1

9
git stash -u

是首选方式。不要掉。他们不会被推。如果您确实删除了您发现的重要内容,您可以将它们取回。

你的其他选择是破坏性的。

Revert 是向历史添加一个新的提交,该提交应用与提交引入的补丁相反。您在此处的选择是针对您想要对尚未成为历史一部分的工作树中的更改执行的操作。Revert 适用于作为历史一部分的已提交更改。

于 2012-08-14T19:16:06.950 回答