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


当前回答

如果您处于子模块的情况下,没有其他解决方案工作,请尝试:

查看问题是什么(可能是一个“脏”案例)使用: git diff 删除 stash git 子模块更新

其他回答

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

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

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

无论你的 repo 是什么状态,你总是可以重新设置到任何以前的承诺:

git reset --hard <commit hash>

这将消除随后发生的所有变化。

要删除未完成的更改,我试图“吉特恢复”我被吉特告诉,但它只是没有工作。

git revert --hard

它的 Git Help 完美地解释了这一点:

--hard 恢复指数和工作树. 在工作树中跟踪文件的任何变化,因为它们被删除. 在写任何跟踪文件的方式,任何未跟踪文件或目录都被删除。

PS:我使用 git 版本 2.35.3.windows.1. 我认为这里的一些答案使问题过于复杂。

git checkout .

这将拒绝对分支的任何未经订购的变更,如果发生任何变更,它不会重新设置它,这是方便的,当你做了一些变更并决定你不想要它们,因为某种原因,你没有承诺这些变更,它实际上只是重新检查分支,并拒绝任何当前未经订购的变更。

(必須在應用程式的根或家指,以便工作)

它甚至在常见的 git 许可之外的目录中工作。

sudo chmod -R 664 ./* && git checkout -- . && git clean -dfx

最近发生在我身上