简体中文 ▾ 主题 ▾ 最新版本 ▾ git-clean 最后更新于 2.45.0

名称

git-clean - 从工作树中移除未追踪的文件

概要

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

描述

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

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

如果提供了任何可选的 <pathspec>... 参数,则仅受那些匹配路径规格(pathspec)的路径影响。

选项

-d

通常情况下,如果没有指定 <pathspec>,git clean 不会递归进入未追踪的目录,以避免移除过多内容。指定 -d 可以使其也递归进入这些目录。如果指定了 <pathspec>,则 -d 无关紧要;所有匹配指定路径的未追踪文件(以及 --force 中提到的嵌套 git 目录的例外情况)都将被移除。

-f
--force

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

-i
--interactive

显示将会执行的操作并以交互方式清理文件。详情请参阅“交互模式”。配置变量 clean.requireForce 将被忽略,因为此模式通过交互操作提供了自身的安全保护。

-n
--dry-run

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

-q
--quiet

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

-e <模式>
--exclude=<模式>

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

-x

不使用标准忽略规则(参见 gitignore[5]),但仍然使用从命令行通过 -e 选项给出的忽略规则。这允许移除所有未追踪的文件,包括构建产物。这可用于(可能结合 git restoregit reset)创建一个干净的工作目录以测试干净构建。

-X

仅移除被 Git 忽略的文件。这在从零开始重新构建一切,但保留手动创建的文件时可能很有用。

交互模式

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

命令循环会显示可用子命令的列表,并给出提示 "What now> "。通常,当提示符以单个 > 结尾时,您可以仅从给出的选项中选择一个并按下回车,如下所示:

    *** 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" 结尾的文件被删除。当您对过滤结果满意后,按回车键(保持为空)返回主菜单。

select by numbers(按数字选择)

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

ask each(逐个询问)

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

quit

这让您可以在不进行任何清理的情况下退出。

help

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

配置

本节中以下所有内容均从 git-config[1] 文档中选择性地包含。内容与彼处相同:

clean.requireForce

一个布尔值,用于使 git-clean 在未提供 -f 时拒绝删除文件。默认为 true。

另请参阅

GIT

Git[1] 套件的一部分