如何从当前工作树中删除未跟踪的本地文件?
如何从当前工作树中删除未跟踪的本地文件?
根据Git文档 git干净
从工作树中删除未跟踪的文件
第1步是显示将使用的删除内容 -n
选项:
git clean -n
清洁步骤 - 注意:这将删除文件:
git clean -f
git clean -f -d
要么 git clean -fd
git clean -f -X
要么 git clean -fX
git clean -f -x
要么 git clean -fx
注意 案件的区别 X
对于后两个命令。
如果 clean.requireForce
在配置中设置为“true”(默认值),需要指定 -f
否则什么都不会发生。
再看看 git-clean
docs以获取更多信息。
-F
- 力
如果Git配置变量clean.requireForce未设置为false,则除非给定-f,-n或-i,否则git clean将拒绝运行。
-X
不要使用从.gitignore(每个目录)和$ GIT_DIR / info / exclude读取的标准忽略规则,但仍然使用-e选项给出的忽略规则。这允许删除所有未跟踪的文件,包括构建产品。这可以使用(可能与git reset一起使用)来创建一个pristine工作目录来测试一个干净的构建。
-X
仅删除Git忽略的文件。这可能有助于从头开始重建所有内容,但保留手动创建的文件。
-n
--dry运行
实际上不要删除任何东西,只显示将要做的事情。
-d
除了未跟踪的文件之外,删除未跟踪的目录。如果未跟踪的目录由不同的Git存储库管理,则默认情况下不会删除它。如果您确实要删除此类目录,请使用-f选项两次。
使用 git clean -f -d
确保这一点 目录 也被删除。
然后,您可以检查您的文件是否真的消失了 git status
。
我很惊讶之前没有人提到这件事:
git clean -i
这代表着 互动 您将快速了解将要删除的内容,为您提供包含/排除受影响文件的可能性。总体而言,仍然比运行强制要快 --dry-run
在真正的清洁之前。
你将不得不折腾 -d
如果你还想照顾空文件夹。最后,它有一个很好的别名:
git iclean
话虽这么说,额外的手持交互式命令可能会让有经验的用户感到厌倦。这些天我只是使用已经提到的 git clean -fd
如果未跟踪的目录是它自己的git存储库(例如子模块),则需要使用 -f
两次:
git clean -d -f -f
删除未跟踪文件的简单方法
要删除所有未跟踪的文件,简单 方式是 首先添加所有这些 和 重置回购如下
git add --all git reset --hard HEAD
我喜欢 git stash save -u
因为你可以用它们全部撤消它们 git stash pop
。
编辑:我还找到了一种方法来显示未被跟踪的文件(例如 git show stash@{0}^3
) https://stackoverflow.com/a/12681856/338986