如何在 Git 中删除未被跟踪的文件

Git 工作目录中的文件可以被跟踪或不被跟踪。

被跟踪的文件是已添加并提交并且 git 管理的文件。被跟踪的文件可以不进行修改,也可以修改或还可以暂存。除了被跟踪的文件,工作目录中的所有其他文件都是未被跟踪的, git 不知道这些文件。

有时你的 git 工作目录可能会有不必要的文件,这些文件要么是自动生成的,要么是从合并中删除,要么是由于错误创建的。在这些情况下,您可以在其中添加 .gitignore 或删除这些文件。如果你想让你的存储库保持良好和清洁,更好的选择是删除不必要的文件。

本文介绍如何在 Git 中删除未被跟踪的文件。

删除未被跟踪的文件

git clean 命令允许您删除未被跟踪的文件。

备份存储库总是一个好主意,因为一旦删除,就无法恢复文件和对它们所做的更改。

在运行实际命令并删除未被跟踪的文件和目录之前,请使用 -n 将执行“空运行”的选项,并显示将删除哪些文件和目录:

git clean -d -n

输出看起来像这样:

Would remove content/test/
Would remove content/blog/post/example.md

如果上面列出的某些文件很重要,您应该使用 git add <file> 开始跟踪这些文件或将它们添加到您的 .gitignore 文件中。

一旦确定要继续删除未被跟踪的文件和目录,请键入:

git clean -d -f

该命令将打印所有成功删除的文件和目录:

Removing content/test/
Removing content/blog/post/example.md

-d 选项告诉 git 也删除未被跟踪的目录。如果您不想删除空的未被跟踪目录,请省略 -d 选项。

-f 选项代表强制执行。如果没有使用并且 Git 配置变量 clean.requireForce 设置为 true , Git 将不会删除这些文件。

如果要以交互方式删除未被跟踪的文件,请使用以下 -i 选项:

git clean -d -i

输出将显示要删除的文件和目录,并询问您如何处理这些文件:

Would remove the following items:
  content/test/   content/blog/post/example.md
*** Commands ***
    1: clean                2: filter by pattern    3: select by numbers
    4: ask each             5: quit                 6: help

选择其中一个选项并点击 Enter

如果要将清理操作限制为给定目录,请将要检查的目录的路径作为命令的参数传递。例如,要检查 src 目录下的文件,请运行:

git clean -d -n src

删除忽略的文件

git clean 命令还允许删除被忽略的文件和目录。

要删除所有被忽略和未被跟踪的文件,请使用以下 -x 选项:

git clean -d -n -x

如果要仅删除忽略的文件和目录,请使用以下 -X 选项:

git clean -d -n -X

上面的命令将删除您的 .gitignore 文件中执行的所有文件和目录。

结论

在本教程中,我们向您展示了如何在 Git 中删除未被跟踪的文件和目录。在实际删除文件之前,请记住始终确认您要删除的文件。