协慌网

登录 贡献 社区

如何从当前的 Git 工作树中删除本地(未跟踪)文件?

如何从当前工作树中删除未跟踪的本地文件?

答案

根据 Git Documentation git clean

从工作树中删除未跟踪的文件


第 1 步是使用-n选项显示要删除的内容:

git clean -n

清洁步骤 - 注意:这将删除文件

git clean -f
  • 要删除目录,请运行git clean -f -dgit clean -fd
  • 要删除被忽略的文件,请运行git clean -f -Xgit clean -fX
  • 要删除忽略和未忽略的文件,请运行git clean -f -xgit clean -fx

注意后两个命令的X上的大小写差异。

如果在配置clean.requireForce设置为 “true”(默认值),则需要指定-f否则实际上不会发生任何事情。

再次查看git-clean文档以获取更多信息。

选项

-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