git-clean(1)
============

NAME
----
git-clean - Remove untracked files from the working tree

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

DESCRIPTION
-----------

Cleans the working tree by recursively removing files that are not
under version control, starting from the current directory.

Normally, only files unknown to Git are removed, but if the `-x`
option is specified, ignored files are also removed. This can, for
example, be useful to remove all build products.

If any optional `<pathspec>...` arguments are given, only those paths
that match the pathspec are affected.

OPTIONS
-------
-d::
	Normally, when no <pathspec> is specified, git clean will not
	recurse into untracked directories to avoid removing too much.
	Specify -d to have it recurse into such directories as well.
	If a <pathspec> is specified, -d is irrelevant; all untracked
	files matching the specified paths (with exceptions for nested
	git directories mentioned under `--force`) will be removed.

-f::
--force::
	If the Git configuration variable clean.requireForce is not set
	to false, 'git clean' will refuse to delete files or directories
	unless given -f or -i.  Git will refuse to modify untracked
	nested git repositories (directories with a .git subdirectory)
	unless a second -f is given.

-i::
--interactive::
	Show what would be done and clean files interactively. See
	``Interactive mode'' for details.

-n::
--dry-run::
	Don't actually remove anything, just show what would be done.

-q::
--quiet::
	Be quiet, only report errors, but not the files that are
	successfully removed.

-e <pattern>::
--exclude=<pattern>::
	Use the given exclude pattern in addition to the standard ignore rules
	(see linkgit:gitignore[5]).

-x::
	Don't use the standard ignore rules (see linkgit:gitignore[5]), but
	still use the ignore rules given with `-e` options from the command
	line.  This allows removing all untracked
	files, including build products.  This can be used (possibly in
	conjunction with 'git restore' or 'git reset') to create a pristine
	working directory to test a clean build.

-X::
	Remove only files ignored by Git.  This may be useful to rebuild
	everything from scratch, but keep manually created files.

Interactive mode
----------------
When the command enters the interactive mode, it shows the
files and directories to be cleaned, and goes into its
interactive command loop.

The command loop shows the list of subcommands available, and
gives a prompt "What now> ".  In general, when the prompt ends
with a single '>', you can pick only one of the choices given
and type return, like this:

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

You also could say `c` or `clean` above as long as the choice is unique.

The main command loop has 6 subcommands.

clean::

   Start cleaning files and directories, and then quit.

filter by pattern::

   This shows the files and directories to be deleted and issues an
   "Input ignore patterns>>" prompt. You can input space-separated
   patterns to exclude files and directories from deletion.
   E.g. "*.c *.h" will exclude files ending with ".c" and ".h" from
   deletion. When you are satisfied with the filtered result, press
   ENTER (empty) back to the main menu.

select by numbers::

   This shows the files and directories to be deleted and issues an
   "Select items to delete>>" prompt. When the prompt ends with double
   '>>' like this, you can make more than one selection, concatenated
   with whitespace or comma.  Also you can say ranges.  E.g. "2-5 7,9"
   to choose 2,3,4,5,7,9 from the list.  If the second number in a
   range is omitted, all remaining items are selected.  E.g. "7-" to
   choose 7,8,9 from the list.  You can say '*' to choose everything.
   Also when you are satisfied with the filtered result, press ENTER
   (empty) back to the main menu.

ask each::

  This will start to clean, and you must confirm one by one in order
  to delete items. Please note that this action is not as efficient
  as the above two actions.

quit::

  This lets you quit without doing any cleaning.

help::

  Show brief usage of interactive git-clean.

CONFIGURATION
-------------

include::includes/cmd-config-section-all.txt[]

include::config/clean.txt[]

SEE ALSO
--------
linkgit:gitignore[5]

GIT
---
Part of the linkgit:git[1] suite
