git-rm [-f] [-n] [-v] [--] <file>…


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".



Files to remove from the index and optionally, from the working tree as well.


Remove files from the working tree as well as from the index.


Don’t actually remove the file(s), just show if they exist in the index.


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).


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:

  1. 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);

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


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/

See Also



Written by Linus Torvalds <>


Documentation by Junio C Hamano and the git-list <>.


Part of the gitlink:git[7] suite