乐闻世界logo
搜索文章和话题

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

9 个月前提问
5 个月前修改
浏览次数115

6个答案

1
2
3
4
5
6

为了在 Git 中从当前工作目录中删除未跟踪的文件,您可以使用 git clean 命令。这个命令会删除工作区中所有没有被跟踪的文件,即那些在 .gitignore 文件中没有列出且不在 Git 版本控制下的文件。

以下是您可以使用的一些 git clean 选项:

  • -n--dry-run:用于模拟删除操作,显示哪些文件会被删除,但实际上并不执行删除操作。
  • -f--force:必须使用此选项才能实际执行删除,因为这是一项具有破坏性的操作,Git 默认不会执行它。
  • -d:允许命令删除未跟踪的目录以及未跟踪的文件。
  • -x:这将忽略 .gitignore 文件中的规则,删除所有未跟踪的文件,包括那些在 .gitignore 中指定的。
  • -X:仅删除在 .gitignore 文件中忽略的未跟踪文件。

例如,如果您想要删除工作目录中的所有未跟踪文件(但保留未跟踪的目录),您可以这样做:

shell
git clean -f

如果您还想删除未跟踪的目录,可以使用:

shell
git clean -fd

如果您想查看哪些文件和目录将被删除(而不是实际删除它们),可以运行:

shell
git clean -nfd

注意git clean 是一个危险的操作,因为它删除的文件无法从 Git 历史中恢复。所以在运行 git clean 命令之前,确保您不需要工作目录中的未跟踪文件。务必先使用 --dry-run 选项来预览将要删除的内容。

2024年6月29日 12:07 回复

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

概要

shell
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…​

描述

通过从当前目录开始递归删除不受版本控制的文件来清理工作树。

通常,仅删除 Git 未知的文件,但如果-x指定了该选项,则忽略的文件也会被删除。例如,这对于删除所有构建产品很有用。

如果<path>...给出任何可选参数,则只有那些路径受到影响。


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

shell
# Print out the list of files and directories which will be removed (dry run) git clean -n -d

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

shell
# Delete the files from the repository 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,--force

如果 Git 配置变量 clean.requireForce 未设置为 false,则 git clean 将拒绝运行,除非给出-f-n-i

-x

不要使用从 .gitignore (每个目录)和 读取的标准忽略规则$GIT_DIR/info/exclude,但仍然使用-e选项给出的忽略规则。这允许删除所有未跟踪的文件,包括构建产品。这可以用来(可能与 git reset 结合使用)创建一个原始工作目录来测试干净的构建。

-X

仅删除 Git 忽略的文件。这对于从头开始重建所有内容可能很有用,但保留手动创建的文件。

-n,--dry-run

实际上不要删除任何东西,只是展示将要做什么。

-d

除了未跟踪的文件之外,还删除未跟踪的目录。如果未跟踪的目录由不同的 Git 存储库管理,则默认情况下不会将其删除。-f如果您确实想删除这样的目录,请使用两次选项。

2024年6月29日 12:07 回复

用于git clean -f -d确保目录也被删除。

  1. 实际上不要删除任何东西,只是展示将要做什么。

    shell
    git clean -n

    或者

    shell
    git clean --dry-run
  2. 除了未跟踪的文件之外,还删除未跟踪的目录。如果未跟踪的目录由不同的 Git 存储库管理,则默认情况下不会将其删除。-f如果您确实想删除这样的目录,请使用该选项两次。

    shell
    git clean -fd

然后您可以检查您的文件是否真的消失了git status

2024年6月29日 12:07 回复

我很惊讶之前没有人提到过这一点:

shell
git clean -i

这代表_交互式_,您将快速了解将要删除的内容,从而可以包含/排除受影响的文件。--dry-run总体而言,仍然比运行真正清洁之前的强制要快。

-d如果您还想处理空文件夹,则必须添加 a 。最后,它是一个很好的别名:

shell
git iclean

话虽如此,对于有经验的用户来说,额外手持交互式命令可能会很累。这些天我只是使用已经提到的git clean -fd

2024年6月29日 12:07 回复

删除未跟踪文件的简单方法

要删除所有未跟踪的文件,简单的方法是首先添加所有文件并**重置存储库,**如下所示

shell
git add --all git reset --hard HEAD

2024年6月29日 12:07 回复

你的答案