如何在我的工作副本中排除非指数的变更?


当前回答

你有一个非常简单的 git 命令 git checkout.

其他回答

对于当前工作目录使用中的所有未输入的文件:

git restore .

对于特定文件的使用:

git restore path/to/file/to/revert

这与 git 交换器一起取代了过度加载的 git 支票(见这里),从而取消了论点的分歧。

如果一个文件既有步骤和未步骤的变化,则仅在 git diff 中显示的未步骤的变化将被转换。

之前 Git 2.23

对于当前工作目录中的所有未输入的文件:

git checkout -- .

对于一个特定的文件:

git checkout -- path/to/file/to/revert

在这里消除双重性(这被称为论点不双重性)。

git checkout -f


男子Git-Checkout:

F、 - 力量

在切换分支时,即使指数或工作树与头部不同,也会进行进展,用来消除当地的变化。

在从指数中查看路径时,不要错过未嵌入的输入;相反,未嵌入的输入被忽略。

如果您不感兴趣保留未完成的更改(特别是如果未完成的更改是新的文件),我发现这个方便:

git diff | git apply --reverse

只用:

git stash -u

是的,容易。

如果你真的很关心你的<unk>子,那么你可以跟随吉特<unk>子下降,但在那个时候你更好地使用(从Mariusz Nowak):

git checkout -- .
git clean -df

然而,我喜欢 git stash -u 最好的,因为它“排除”所有跟踪和未跟踪的变化在一个命令。 但是 git checkout -. 只排除跟踪的变化, git clean -df 只排除未跟踪的变化... 并输入两个命令是太多的工作:)

2019年更新

您现在可以在一个跟踪文件中删除未完成的更改,使用:

git restore <file>

在当前目录中的所有跟踪文件中(重复)与:

git restore .

如果您将后者从存储库的根中运行,则将删除项目中的所有跟踪文件中的未进行的更改。

笔记

git restore 于 2019 年 7 月推出,并在 2.23 版本中发布,作为 git checkout 命令分成 git restore 文件和 git switch 分支的部分。 git checkout 仍然按照它所使用的方式行事,而旧的答案仍然是完美的。