</div>\r
<h2>DESCRIPTION</h2>\r
<div class="sectionbody">\r
-<p>Remove files from the working tree and from the index. The\r
-files have to be identical to the tip of the branch, and no\r
-updates to its contents must have been placed in the staging\r
-area (aka index). When --cached is given, the staged content has to\r
-match either the tip of the branch <strong>or</strong> the file on disk.</p>\r
+<p>Remove files from the index, or from the working tree and the index.\r
+<tt>git rm</tt> will not remove a file from just your working directory.\r
+(There is no option to remove a file only from the work tree\r
+and yet keep it in the index; use <tt>/bin/rm</tt> if you want to do that.)\r
+The files being removed have to be identical to the tip of the branch,\r
+and no updates to their contents can be staged in the index,\r
+though that default behavior can be overridden with the <tt>-f</tt> option.\r
+When <em>--cached</em> is given, the staged content has to\r
+match either the tip of the branch or the file on disk,\r
+allowing the file to be removed from just the index.</p>\r
</div>\r
<h2>OPTIONS</h2>\r
<div class="sectionbody">\r
<dd>\r
<p>\r
Files to remove. Fileglobs (e.g. <tt>*.c</tt>) can be given to\r
- remove all matching files. Also a leading directory name\r
- (e.g. <tt>dir</tt> to add <tt>dir/file1</tt> and <tt>dir/file2</tt>) can be\r
- given to remove all files in the directory, recursively,\r
- but this requires <tt>-r</tt> option to be given for safety.\r
+ remove all matching files. If you want git to expand\r
+ file glob characters, you may need to shell-escape them.\r
+ A leading directory name\r
+ (e.g. <tt>dir</tt> to remove <tt>dir/file1</tt> and <tt>dir/file2</tt>) can be\r
+ given to remove all files in the directory, and recursively\r
+ all sub-directories,\r
+ but this requires the <tt>-r</tt> option to be explicitly given.\r
</p>\r
</dd>\r
<dt>\r
</dt>\r
<dd>\r
<p>\r
- Don't actually remove the file(s), just show if they exist in\r
- the index.\r
+ Don't actually remove any file(s). Instead, just show\r
+ if they exist in the index and would otherwise be removed\r
+ by the command.\r
</p>\r
</dd>\r
<dt>\r
</dt>\r
<dd>\r
<p>\r
- This option can be used to tell the command to remove\r
- the paths only from the index, leaving working tree\r
- files.\r
+ Use this option to unstage and remove paths only from the index.\r
+ Working tree files, whether modified or not, will be\r
+ left alone.\r
</p>\r
</dd>\r
<dt>\r
</div>\r
<h2>DISCUSSION</h2>\r
<div class="sectionbody">\r
-<p>The list of <file> given to the command can be exact pathnames,\r
-file glob patterns, or leading directory name. The command\r
-removes only the paths that is known to git. Giving the name of\r
+<p>The <file> list given to the command can be exact pathnames,\r
+file glob patterns, or leading directory names. The command\r
+removes only the paths that are known to git. Giving the name of\r
a file that you have not told git about does not remove that file.</p>\r
+<p>File globbing matches across directory boundaries. Thus, given\r
+two directories <tt>d</tt> and <tt>d2</tt>, there is a difference between\r
+using <tt>git rm 'd*'</tt> and <tt>git rm 'd/*'</tt>, as the former will\r
+also remove all of directory <tt>d2</tt>.</p>\r
</div>\r
<h2>EXAMPLES</h2>\r
<div class="sectionbody">\r
<tt>Documentation</tt> directory and any of its subdirectories.\r
</p>\r
<p>Note that the asterisk <tt>*</tt> is quoted from the shell in this\r
-example; this lets the command include the files from\r
-subdirectories of <tt>Documentation/</tt> directory.</p>\r
+example; this lets git, and not the shell, expand the pathnames\r
+of files and subdirectories under the <tt>Documentation/</tt> directory.</p>\r
</dd>\r
<dt>\r
git-rm -f git-*.sh\r
</dt>\r
<dd>\r
<p>\r
- Remove all git-*.sh scripts that are in the index.\r
Because this example lets the shell expand the asterisk\r
(i.e. you are listing the files explicitly), it\r
does not remove <tt>subdir/git-foo.sh</tt>.\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 07-Jan-2008 07:50:46 UTC\r
+Last updated 17-Apr-2008 02:17:31 UTC\r
</div>\r
</div>\r
</body>\r
DESCRIPTION
-----------
-Remove files from the working tree and from the index. The
-files have to be identical to the tip of the branch, and no
-updates to its contents must have been placed in the staging
-area (aka index). When --cached is given, the staged content has to
-match either the tip of the branch *or* the file on disk.
+Remove files from the index, or from the working tree and the index.
+`git rm` will not remove a file from just your working directory.
+(There is no option to remove a file only from the work tree
+and yet keep it in the index; use `/bin/rm` if you want to do that.)
+The files being removed have to be identical to the tip of the branch,
+and no updates to their contents can be staged in the index,
+though that default behavior can be overridden with the `-f` option.
+When '--cached' is given, the staged content has to
+match either the tip of the branch or the file on disk,
+allowing the file to be removed from just the index.
OPTIONS
-------
<file>...::
Files to remove. Fileglobs (e.g. `*.c`) can be given to
- remove all matching files. Also a leading directory name
- (e.g. `dir` to add `dir/file1` and `dir/file2`) can be
- given to remove all files in the directory, recursively,
- but this requires `-r` option to be given for safety.
+ remove all matching files. If you want git to expand
+ file glob characters, you may need to shell-escape them.
+ A leading directory name
+ (e.g. `dir` to remove `dir/file1` and `dir/file2`) can be
+ given to remove all files in the directory, and recursively
+ all sub-directories,
+ but this requires the `-r` option to be explicitly given.
-f::
Override the up-to-date check.
-n, \--dry-run::
- Don't actually remove the file(s), just show if they exist in
- the index.
+ Don't actually remove any file(s). Instead, just show
+ if they exist in the index and would otherwise be removed
+ by the command.
-r::
Allow recursive removal when a leading directory name is
for command-line options).
\--cached::
- This option can be used to tell the command to remove
- the paths only from the index, leaving working tree
- files.
+ Use this option to unstage and remove paths only from the index.
+ Working tree files, whether modified or not, will be
+ left alone.
\--ignore-unmatch::
Exit with a zero status even if no files matched.
DISCUSSION
----------
-The list of <file> given to the command can be exact pathnames,
-file glob patterns, or leading directory name. The command
-removes only the paths that is known to git. Giving the name of
+The <file> list given to the command can be exact pathnames,
+file glob patterns, or leading directory names. The command
+removes only the paths that are known to git. Giving the name of
a file that you have not told git about does not remove that file.
+File globbing matches across directory boundaries. Thus, given
+two directories `d` and `d2`, there is a difference between
+using `git rm \'d\*\'` and `git rm \'d/\*\'`, as the former will
+also remove all of directory `d2`.
EXAMPLES
--------
`Documentation` directory and any of its subdirectories.
+
Note that the asterisk `\*` is quoted from the shell in this
-example; this lets the command include the files from
-subdirectories of `Documentation/` directory.
+example; this lets git, and not the shell, expand the pathnames
+of files and subdirectories under the `Documentation/` directory.
git-rm -f git-*.sh::
- Remove all git-*.sh scripts that are in the index.
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`.