Skip to content

git-clean

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

概要

bash
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] [<pathspec>...]

描述

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

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

如果给出了任何可选的 <pathspec>... 参数,则仅影响匹配 pathspec 的路径。

选项

-d

通常,当未指定 <pathspec> 时,git clean 不会递归进入未跟踪的目录以避免删除太多内容。指定 -d 使其也递归进入此类目录。如果指定了 <pathspec>,则 -d 无关紧要;所有匹配指定路径的未跟踪文件(嵌套 git 目录的例外在 --force 下提到)将被删除。

-f, --force

如果 Git 配置变量 clean.requireForce 未设置为 false,除非给定 -f,否则 'git clean' 将拒绝删除文件或目录。除非给出第二个 -f,否则 Git 将拒绝修改未跟踪的嵌套 git 存储库(具有 .git 子目录的目录)。

-i, --interactive

显示将要执行的操作并以交互方式清理文件。有关详细信息,请参阅"交互模式"。配置变量 clean.requireForce 被忽略,因为此模式通过进入交互模式提供自己的安全保护。

-n, --dry-run

不实际删除任何内容,只显示将要执行的操作。配置变量 clean.requireForce 被忽略,因为反正不会删除任何内容。

-q, --quiet

静默模式,仅报告错误,不报告成功删除的文件。

-e <pattern>, --exclude=<pattern>

除了标准忽略规则外,使用给定的排除模式(参见 gitignore(5))。

-x

不使用标准忽略规则(参见 gitignore(5)),但仍使用通过命令行 -e 选项给出的忽略规则。这允许删除所有未跟踪的文件,包括构建产物。这可用于(可能与 'git restore' 或 'git reset' 结合)创建原始工作目录以测试干净构建。

-X

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

交互模式

当命令进入交互模式时,它显示要清理的文件和目录,并进入其交互命令循环。

命令循环显示可用子命令列表,并给出提示 "Whatnow> "。通常,当提示以单个 > 结尾时,你只能选择给定选项之一并按回车,如下所示:

    *** Commands ***
	1: clean                2: filter by pattern    3: select by numbers
	4: ask each             5: quit                 6: help
    What now> 1

你也可以在上面说 cclean,只要选择是唯一的。

主命令循环有 6 个子命令。

clean

开始清理文件和目录,然后退出。

filter by pattern

显示要删除的文件和目录,并发出 "Input ignore patterns>>" 提示。你可以输入空格分隔的模式来排除文件和目录免于删除。例如 "*.c *.h" 将排除以 ".c" 和 ".h" 结尾的文件免于删除。当你对过滤结果满意时,按 ENTER(空)返回主菜单。

select by numbers

显示要删除的文件和目录,并发出 "Select items to delete>>" 提示。当提示以双 >> 结尾时,你可以进行多个选择,用空格或逗号连接。你也可以指定范围。例如 "2-5 7,9" 从列表中选择 2,3,4,5,7,9。如果范围中的第二个数字被省略,则选择所有剩余项目。例如 "7-" 从列表中选择 7,8,9。你可以说 * 选择所有内容。当你对过滤结果满意时,按 ENTER(空)返回主菜单。

ask each

这将开始清理,你必须逐一确认才能删除项目。请注意,此操作不如上述两种操作高效。

quit

这让你退出而不进行任何清理。

help

显示交互式 git-clean 的简要用法。

配置

clean.requireForce

布尔值,使 git-clean 拒绝删除文件,除非给定 -f。默认为 true。

另请参阅

gitignore(5)

Git

git(1) 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布