# git-clean
> 原文: [https://git-scm.com/docs/git-clean](https://git-scm.com/docs/git-clean)
## 名称
git-clean - 从工作树中删除未跟踪的文件
## 概要
```
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…
```
## 描述
通过从当前目录开始递归删除不受版本控制的文件来清除工作树。
通常,只删除Git未知的文件,但如果指定了`-x`选项,则也会删除被忽略的文件。例如,这可以用于删除所有构建产品。
如果给出任何可选的`<path>...`参数,则只会影响这些路径。
## OPTIONS
```
-d
```
除了未跟踪的文件之外,删除未跟踪的目录。如果未跟踪的目录由不同的Git存储库管理,则默认情况下不会删除它。如果您确实要删除此类目录,请使用-f选项两次。
```
-f
```
```
--force
```
如果Git配置变量clean.requireForce未设置为false, _git clean_ 将拒绝删除文件或目录,除非给出-f,-n或-i。除非给出第二个-f,否则Git将拒绝使用.git子目录或文件删除目录。
```
-i
```
```
--interactive
```
显示将要执行的操作并以交互方式清理文件。有关详细信息,请参阅“交互模式”
```
-n
```
```
--dry-run
```
不要删除任何东西,只显示将要做的事情。
```
-q
```
```
--quiet
```
保持安静,仅报告错误,但不报告成功删除的文件。
```
-e <pattern>
```
```
--exclude=<pattern>
```
除了在.gitignore(每个目录)和$ GIT_DIR / info / exclude中找到的那些之外,还要考虑这些模式在有效的忽略规则集中。
```
-x
```
不要使用从.gitignore(每个目录)和$ GIT_DIR / info / exclude读取的标准忽略规则,但仍然使用`-e`选项给出的忽略规则。这允许删除所有未跟踪的文件,包括构建产品。这可以使用(可能与 _git reset_ 一起使用)来创建一个pristine工作目录来测试一个干净的构建。
```
-X
```
仅删除Git忽略的文件。这可能有助于从头开始重建所有内容,但保留手动创建的文件。
## 互动模式
当命令进入交互模式时,它显示要清理的文件和目录,并进入其交互式命令循环。
命令循环显示可用的子命令列表,并给出提示“What now>”。通常,当提示以单个_>结束时。_ ,您只能选择给定的一个选项并输入return,如下所示:
```
*** Commands ***
1: clean 2: filter by pattern 3: select by numbers
4: ask each 5: quit 6: help
What now> 1
```
只要选择是唯一的,您也可以说`c`或`clean`。
主命令循环有6个子命令。
```
clean
```
开始清理文件和目录,然后退出。
```
filter by pattern
```
这显示了要删除的文件和目录,并发出“输入忽略模式>>”提示。您可以输入以空格分隔的模式,以排除文件和目录的删除。例如。 “* .c * .h”将从删除中排除以“.c”和“.h”结尾的文件。如果对筛选结果感到满意,请按ENTER(空)返回主菜单。
```
select by numbers
```
这显示了要删除的文件和目录,并发出“选择要删除的项目>>”提示。当提示以double _>>结束时_就像这样,你可以做多个选择,用空格或逗号连接起来。你也可以说范围。例如。 “2-5 7,9”从列表中选择2,3,4,5,7,9。如果省略范围中的第二个数字,则选择所有剩余项目。例如。 “7-”从列表中选择7,8,9。你可以说 _*_ 来选择一切。此外,当您对筛选结果感到满意时,请按ENTER(空)返回主菜单。
```
ask each
```
这将开始清理,您必须逐个确认才能删除项目。请注意,此操作不如上述两个操作有效。
```
quit
```
这样可以在不进行清洁的情况下退出。
```
help
```
显示交互式git-clean的简要用法。
## 也可以看看
[gitignore [5]](https://git-scm.com/docs/gitignore)
## GIT
部分 [git [1]](https://git-scm.com/docs/git) 套件
- git
- git-config
- git-help
- git-init
- git-clone
- git-add
- git-status
- git-diff
- git-commit
- git-reset
- git-rm
- git-mv
- git-branch
- git-checkout
- git-merge
- git-mergetool
- git-log
- git-stash
- git-tag
- git-worktree
- git-fetch
- git-pull
- git-push
- git-remote
- git-submodule
- git-show
- git-log
- git-shortlog
- git-describe
- git-apply
- git-cherry-pick
- git-rebase
- git-revert
- git-bisect
- git-blame
- git-grep
- gitattributes
- giteveryday
- gitglossary
- githooks
- gitignore
- gitmodules
- gitrevisions
- gittutorial
- gitworkflows
- git-am
- git-format-patch
- git-send-email
- git-request-pull
- git-svn
- git-fast-import
- git-clean
- git-gc
- git-fsck
- git-reflog
- git-filter-branch
- git-instaweb
- git-archive
- git-bundle
- git-daemon
- git-update-server-info
- git-cat-file
- git-check-ignore
- git-checkout-index
- git-commit-tree
- git-count-objects
- git-diff-index
- git-for-each-ref
- git-hash-object
- git-ls-files
- git-merge-base
- git-read-tree
- git-rev-list
- git-rev-parse
- git-show-ref
- git-symbolic-ref
- git-update-index
- git-update-ref
- git-verify-pack
- git-write-tree