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


当前回答

如果几乎不可能删除文件的修改,你是否考虑忽略它们? 如果这个声明是正确的,并且你不会在开发过程中触摸这些文件,这个命令可能有用:

git update-index --assume-unchanged 文件_to_ignore

其他回答

在我看来,

git clean -df

应该做技巧. 如 Git 文档上 git clean

git-clean - 从工作树中删除未追踪的文件

描述

清理工作树通过重复删除不受版本控制的文件,从当前目录开始. 通常,只有未知的文件到 Git 被删除,但如果 -x 选项被指定,忽略的文件也被删除. 例如,这可以有用去除所有构建产品. 如果任何可选的... 论点被提供,只有这些路径被影响。

选项

另一种更快的方式是:

git stash save --keep-index --include-untracked

你不需要包含 - 包括 - 不被吸引,如果你不想仔细了解它。

接下来,你可以用 git stash drop 命令放下这个 stash 如果你愿意。

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

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

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

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

看起来完整的解决方案是:

git clean -df
git checkout -- .

警告:虽然它不会删除在.gitignore 中直接提到的无视文件,但 git clean -df 可能会删除在文件夹中居住的无视文件。

git clean 删除所有未跟踪的文件, git checkout 清除所有未跟踪的更改。