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


当前回答

我真的觉得这篇文章有用来解释什么时候使用什么命令: http://www.szakmeister.net/blog/2011/oct/12/reverting-changes-git/

有几个不同的案例:

如果您没有下载文件,则使用 git checkout. Checkout “更新工作树中的文件以匹配指数中的版本”。 如果文件没有下载(因此添加到指数)... 这个命令将基本上将文件转换为您最后的承诺。

我怀疑使用 git stash 是很受欢迎的选择,因为它有点不那么危险. 你总是可以回到它,如果你偶然在使用 git reset 时跳过太远。

请参见上面的文章以获得更多建议。

其他回答

如果所有的步骤文件实际上已经完成,那么分支可以简单地重新设置,例如从您的GUI,大约有三个鼠标点击:分支,重新设置,是的!

因此,我经常在实践中做的事情,以逆转不需要的地方变化,就是承诺所有的好事,然后重新设置分支。

如果好事是在单一的承诺中承诺,那么你可以使用“修改最后的承诺”将其带回被推翻或不推翻,如果你最终想承诺它有点不同。

这可能不是你正在寻找问题的技术解决方案,但我认为这是一个非常实用的解决方案. 它允许你选择性地排除未完成的变化,重新调整你不喜欢的变化,并保持你所做的变化。

因此,简而言之,我只是承诺,分支重新设置,并修改最后的承诺。

尝试了上面的所有解决方案,但仍然无法摆脱新的,未完成的文件。

使用 git clean -f 删除这些新文件 - 但是要小心! 注意力选项。

最简单的方式是使用这个命令:

此命令用于排除工作目录的变更 -

git checkout -- .

首頁 〉外文書 〉文學 〉文學 〉HTTPS://git-scm.com/docs/git-checkout

在 git 命令中,未追踪文件的存储是通过使用:

git stash -u

HTTP://git-scm.com/docs/git-stash

你可以使用 git stash - 如果有什么不对劲,你仍然可以从 stash 返回。 类似于这里的一些其他答案,但这个也删除所有未输入的文件,以及所有未输入的删除:

git add .
git stash

如果你检查一切都没事,请放下:

git stash drop

比拉尔·马克索德(Bilal Maqsood)与吉特清洁的答案也为我工作了,但我有更多的控制权 - 如果我偶然做STH,我仍然可以恢复我的变化

更新

我认为还有1个变化(我不知道为什么这对我以前工作):

git add. - A 而不是 git add.

没有 -A 删除的文件将不会复制

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

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

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