.SH "SYNOPSIS"
.nf
-\fIgit\-clean\fR [\-d] [\-n] [\-q] [\-x | \-X]
+\fIgit\-clean\fR [\-d] [\-n] [\-q] [\-x | \-X] [\-\-] <paths>...
.fi
.SH "DESCRIPTION"
-Removes files unknown to git\&. This allows to clean the working tree from files that are not under version control\&. If the \fI\-x\fR option is specified, ignored files are also removed, allowing to remove all build products\&.
+Removes files unknown to git\&. This allows to clean the working tree from files that are not under version control\&. If the \fI\-x\fR option is specified, ignored files are also removed, allowing to remove all build products\&. When optional <paths>... arguments are given, the paths affected are further limited to those that match them\&.
.SH "OPTIONS"
[\-\-cacheinfo <mode> <object> <file>]*
[\-\-chmod=(+|\-)x]
[\-\-assume\-unchanged | \-\-no\-assume\-unchanged]
- [\-\-really\-refresh] [\-\-unresolve]
+ [\-\-really\-refresh] [\-\-unresolve] [\-\-again]
[\-\-info\-only] [\-\-index\-info]
[\-z] [\-\-stdin]
[\-\-verbose]
When these flags are specified, the object name recorded for the paths are not updated\&. Instead, these options sets and unsets the "assume unchanged" bit for the paths\&. When the "assume unchanged" bit is on, git stops checking the working tree files for possible modifications, so you need to manually unset the bit to tell git when you change the working tree file\&. This is sometimes helpful when working with a big project on a filesystem that has very slow lstat(2) system call (e\&.g\&. cifs)\&.
.TP
+\-\-again
+Runs git\-update\-index itself on the paths whose index entries are different from those from the HEAD commit\&.
+
+.TP
\-\-unresolve
Restores the \fIunmerged\fR or \fIneeds updating\fR state of a file during a merge if it was cleared by accident\&.