blob: a7f309dff5a327ba14b38b63b931060582c53c28 [file] [log] [blame]
Pavel Roskinc3b831b2006-04-05 02:00:48 -04001git-clean(1)
2============
3
4NAME
5----
6git-clean - Remove untracked files from the working tree
7
8SYNOPSIS
9--------
10[verse]
Jiang Xin17696002013-06-25 23:53:48 +080011'git clean' [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>...
Pavel Roskinc3b831b2006-04-05 02:00:48 -040012
13DESCRIPTION
14-----------
Wesley J. Landaker911198f2009-04-25 09:13:41 -060015
Junio C Hamano6a260f52009-05-06 10:48:26 -070016Cleans the working tree by recursively removing files that are not
17under version control, starting from the current directory.
Wesley J. Landaker911198f2009-04-25 09:13:41 -060018
Matthieu Moy23f82392016-06-28 13:40:10 +020019Normally, only files unknown to Git are removed, but if the `-x`
Wesley J. Landaker911198f2009-04-25 09:13:41 -060020option is specified, ignored files are also removed. This can, for
21example, be useful to remove all build products.
22
Abhijit Menon-Senf448e242008-07-30 15:03:43 +053023If any optional `<path>...` arguments are given, only those paths
24are affected.
Junio C Hamano393e3b12006-05-08 12:02:44 -070025
Pavel Roskinc3b831b2006-04-05 02:00:48 -040026OPTIONS
27-------
28-d::
Elijah Newrene86bbcf2019-09-17 09:35:01 -070029 Normally, when no <path> is specified, git clean will not
30 recurse into untracked directories to avoid removing too much.
31 Specify -d to have it recurse into such directories as well.
32 If any paths are specified, -d is irrelevant; all untracked
33 files matching the specified paths (with exceptions for nested
34 git directories mentioned under `--force`) will be removed.
Pavel Roskinc3b831b2006-04-05 02:00:48 -040035
Josh Triplett21225912007-04-23 17:18:16 -070036-f::
René Scharfef7aec122009-08-29 11:05:00 +020037--force::
Thomas Ackermann2de9b712013-01-21 20:17:53 +010038 If the Git configuration variable clean.requireForce is not set
Mikko Rapelibcd57cb2015-02-26 15:16:49 +020039 to false, 'git clean' will refuse to delete files or directories
Elijah Newren09487f22019-09-17 09:35:02 -070040 unless given -f or -i. Git will refuse to modify untracked
41 nested git repositories (directories with a .git subdirectory)
42 unless a second -f is given.
Jiang Xin17696002013-06-25 23:53:48 +080043
44-i::
45--interactive::
Jiang Xinc0be6b42013-06-25 23:53:55 +080046 Show what would be done and clean files interactively. See
47 ``Interactive mode'' for details.
Josh Triplett21225912007-04-23 17:18:16 -070048
Pavel Roskinc3b831b2006-04-05 02:00:48 -040049-n::
Stephan Beyer459cf2e2008-06-08 03:36:10 +020050--dry-run::
Pavel Roskinc3b831b2006-04-05 02:00:48 -040051 Don't actually remove anything, just show what would be done.
52
53-q::
Stephan Beyer459cf2e2008-06-08 03:36:10 +020054--quiet::
Pavel Roskinc3b831b2006-04-05 02:00:48 -040055 Be quiet, only report errors, but not the files that are
56 successfully removed.
57
Jared Hance07de4eb2010-07-20 15:35:56 -040058-e <pattern>::
59--exclude=<pattern>::
Denton Liu407e7682019-03-07 00:25:28 -080060 Use the given exclude pattern in addition to the standard ignore rules
61 (see linkgit:gitignore[5]).
Jared Hance07de4eb2010-07-20 15:35:56 -040062
Pavel Roskinc3b831b2006-04-05 02:00:48 -040063-x::
Denton Liu407e7682019-03-07 00:25:28 -080064 Don't use the standard ignore rules (see linkgit:gitignore[5]), but
65 still use the ignore rules given with `-e` options from the command
66 line. This allows removing all untracked
Pavel Roskinc3b831b2006-04-05 02:00:48 -040067 files, including build products. This can be used (possibly in
Nguyễn Thái Ngọc Duy80f537f2019-04-25 16:45:58 +070068 conjunction with 'git restore' or 'git reset') to create a pristine
Pavel Roskinc3b831b2006-04-05 02:00:48 -040069 working directory to test a clean build.
70
71-X::
Thomas Ackermann2de9b712013-01-21 20:17:53 +010072 Remove only files ignored by Git. This may be useful to rebuild
Pavel Roskinc3b831b2006-04-05 02:00:48 -040073 everything from scratch, but keep manually created files.
74
Jiang Xinc0be6b42013-06-25 23:53:55 +080075Interactive mode
76----------------
77When the command enters the interactive mode, it shows the
78files and directories to be cleaned, and goes into its
79interactive command loop.
80
81The command loop shows the list of subcommands available, and
82gives a prompt "What now> ". In general, when the prompt ends
83with a single '>', you can pick only one of the choices given
84and type return, like this:
85
86------------
87 *** Commands ***
88 1: clean 2: filter by pattern 3: select by numbers
89 4: ask each 5: quit 6: help
90 What now> 1
91------------
92
93You also could say `c` or `clean` above as long as the choice is unique.
94
95The main command loop has 6 subcommands.
96
97clean::
98
99 Start cleaning files and directories, and then quit.
100
101filter by pattern::
102
103 This shows the files and directories to be deleted and issues an
Thomas Ackermannf745acb2014-11-03 21:37:07 +0100104 "Input ignore patterns>>" prompt. You can input space-separated
Jiang Xinc0be6b42013-06-25 23:53:55 +0800105 patterns to exclude files and directories from deletion.
106 E.g. "*.c *.h" will excludes files end with ".c" and ".h" from
107 deletion. When you are satisfied with the filtered result, press
108 ENTER (empty) back to the main menu.
109
110select by numbers::
111
112 This shows the files and directories to be deleted and issues an
113 "Select items to delete>>" prompt. When the prompt ends with double
114 '>>' like this, you can make more than one selection, concatenated
115 with whitespace or comma. Also you can say ranges. E.g. "2-5 7,9"
116 to choose 2,3,4,5,7,9 from the list. If the second number in a
Jiang Xin309422e2013-07-24 06:22:43 +0800117 range is omitted, all remaining items are selected. E.g. "7-" to
Jiang Xinc0be6b42013-06-25 23:53:55 +0800118 choose 7,8,9 from the list. You can say '*' to choose everything.
119 Also when you are satisfied with the filtered result, press ENTER
120 (empty) back to the main menu.
121
122ask each::
123
124 This will start to clean, and you must confirm one by one in order
125 to delete items. Please note that this action is not as efficient
126 as the above two actions.
127
128quit::
129
130 This lets you quit without do cleaning.
131
132help::
133
134 Show brief usage of interactive git-clean.
135
Philip Oakley068c6742012-09-19 00:25:33 +0100136SEE ALSO
137--------
138linkgit:gitignore[5]
139
Pavel Roskinc3b831b2006-04-05 02:00:48 -0400140GIT
141---
Christian Couder9e1f0a82008-06-06 09:07:32 +0200142Part of the linkgit:git[1] suite