git-clean - Man Page

Remove untracked files from the working tree

Examples (TL;DR)

Synopsis

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​. 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​. Configuration variable clean​.requireForce is ignored, as this mode gives its own safety protection by going interactive​.

-n,  --dry-run

Don’t actually remove anything, just show what would be done​. Configuration variable clean​.requireForce is ignored, as nothing will be deleted anyway​.

-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 gitignore(5))​.

-x

Don’t use the standard ignore rules (see 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

Everything below this line in this section is selectively included from the git-config(1) documentation​. The content is the same as what’s found there:

clean​.requireForce

A boolean to make git-clean refuse to delete files unless -f is given​. Defaults to true​.

See Also

gitignore(5)

Git

Part of the git(1) suite

Info

09/28/2026 Git 2.56.0 Git Manual