# 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