git-rm(1)
=========

NAME
----
git-rm - Remove files from the working tree and from the index

SYNOPSIS
--------
'git-rm' [-f] [-n] [-v] [--] <file>...

DESCRIPTION
-----------
A convenience wrapper for git-update-index --remove. For those coming
from cvs, git-rm provides an operation similar to "cvs rm" or "cvs
remove".


OPTIONS
-------
<file>...::
	Files to remove from the index and optionally, from the
	working tree as well.

-f::
	Remove files from the working tree as well as from the index.

-n::
        Don't actually remove the file(s), just show if they exist in
        the index.

-v::
        Be verbose.

\--::
	This option can be used to separate command-line options from
	the list of files, (useful when filenames might be mistaken
	for command-line options).


DISCUSSION
----------

The list of <file> given to the command is fed to `git-ls-files`
command to list files that are registered in the index and
are not ignored/excluded by `$GIT_DIR/info/exclude` file or
`.gitignore` file in each directory.  This means two things:

. You can put the name of a directory on the command line, and the
  command will remove all files in it and its subdirectories (the
  directories themselves are never removed from the working tree);

. Giving the name of a file that is not in the index does not
  remove that file.


EXAMPLES
--------
git-rm Documentation/\\*.txt::

	Removes all `\*.txt` files from the index that are under the
	`Documentation` directory and any of its subdirectories. The
	files are not removed from the working tree.
+
Note that the asterisk `\*` is quoted from the shell in this
example; this lets the command include the files from
subdirectories of `Documentation/` directory.

git-rm -f git-*.sh::

	Remove all git-*.sh scripts that are in the index. The files
	are removed from the index, and (because of the -f option),
	from the working tree as well. Because this example lets the
	shell expand the asterisk (i.e. you are listing the files
	explicitly), it does not remove `subdir/git-foo.sh`.

See Also
--------
gitlink:git-add[1]

Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

