1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en">
5 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8" />
6 <meta name=
"generator" content=
"AsciiDoc 8.2.5" />
7 <style type=
"text/css">
9 p
, li
, dt
, dd
, div
, pre
, h1
, h2
, h3
, h4
, h5
, h6
{
11 border: 1px solid red;
16 margin: 1em 5% 1em 5%;
21 text-decoration: underline
;
39 h1
, h2
, h3
, h4
, h5
, h6
{
41 font-family: sans-serif
;
48 border-bottom: 2px solid silver
;
66 border: 1px solid silver
;
81 font-family: sans-serif
;
88 font-family: sans-serif
;
92 font-family: sans-serif
;
94 border-top: 2px solid silver
;
100 padding-bottom: 0.5em;
104 padding-bottom: 0.5em;
108 div
.tableblock
, div
.imageblock
, div
.exampleblock
, div
.verseblock
,
109 div
.quoteblock
, div
.literalblock
, div
.listingblock
, div
.sidebarblock
,
110 div
.admonitionblock
{
113 margin-bottom: 1.5em;
115 div
.admonitionblock
{
117 margin-bottom: 2.5em;
120 div
.content
{ /* Block element content. */
124 /* Block element titles. */
125 div
.title
, caption
.title
{
126 font-family: sans-serif
;
130 margin-bottom: 0.5em;
136 td div
.title:first-child
{
139 div
.content div
.title:first-child
{
142 div
.content
+ div
.title
{
146 div
.sidebarblock
> div
.content
{
148 border: 1px solid silver
;
155 div
.listingblock
> div
.content
{
156 border: 1px solid silver
;
161 div
.quoteblock
> div
.content
{
168 div
.verseblock
+ div
.attribution
{
172 div
.admonitionblock
.icon
{
176 text-decoration: underline
;
178 padding-right: 0.5em;
180 div
.admonitionblock td
.content
{
182 border-left: 2px solid silver
;
185 div
.exampleblock
> div
.content
{
186 border-left: 2px solid silver
;
190 div
.verseblock div
.content
{
194 div
.imageblock div
.content
{ padding-left: 0; }
195 div
.imageblock img
{ border: 1px solid silver
; }
196 span
.image img
{ border-style: none
; }
200 margin-bottom: 0.8em;
212 list-style-position: outside
;
215 list-style-type: lower-alpha
;
218 div
.tableblock
> table
{
219 border: 3px solid
#527bbd;
222 font-family: sans-serif
;
231 margin-bottom: 0.8em;
239 padding-right: 0.8em;
246 div#footer-badges
{ display: none
; }
251 font-family: sans-serif
;
255 margin-bottom: 0.1em;
258 div
.toclevel1
, div
.toclevel2
, div
.toclevel3
, div
.toclevel4
{
274 include1::./stylesheets
/xhtml11-manpage
.css
[]
275 /* Workarounds for IE6's broken and incomplete CSS2. */
277 div
.sidebar-content
{
279 border: 1px solid silver
;
282 div
.sidebar-title
, div
.image-title
{
283 font-family: sans-serif
;
286 margin-bottom: 0.5em;
289 div
.listingblock div
.content
{
290 border: 1px solid silver
;
295 div
.quoteblock-content
{
299 div
.exampleblock-content
{
300 border-left: 2px solid silver
;
304 /* IE6 sets dynamically generated links as visited. */
305 div#toc
a:visited
{ color: blue
; }
307 <title>git-rm(
1)
</title>
312 git-rm(
1) Manual Page
315 <div class=
"sectionbody">
317 Remove files from the working tree and from the index
322 <div class=
"sectionbody">
323 <div class=
"para"><p><em>git rm
</em> [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--]
<file
>…</p></div>
325 <h2 id=
"_description">DESCRIPTION
</h2>
326 <div class=
"sectionbody">
327 <div class=
"para"><p>Remove files from the index, or from the working tree and the index.
328 <tt>git rm
</tt> will not remove a file from just your working directory.
329 (There is no option to remove a file only from the working tree
330 and yet keep it in the index; use
<tt>/bin/rm
</tt> if you want to do that.)
331 The files being removed have to be identical to the tip of the branch,
332 and no updates to their contents can be staged in the index,
333 though that default behavior can be overridden with the
<tt>-f
</tt> option.
334 When
<tt>--cached
</tt> is given, the staged content has to
335 match either the tip of the branch or the file on disk,
336 allowing the file to be removed from just the index.
</p></div>
338 <h2 id=
"_options">OPTIONS
</h2>
339 <div class=
"sectionbody">
340 <div class=
"vlist"><dl>
346 Files to remove. Fileglobs (e.g.
<tt>*.c
</tt>) can be given to
347 remove all matching files. If you want git to expand
348 file glob characters, you may need to shell-escape them.
349 A leading directory name
350 (e.g.
<tt>dir
</tt> to remove
<tt>dir/file1
</tt> and
<tt>dir/file2
</tt>) can be
351 given to remove all files in the directory, and recursively
353 but this requires the
<tt>-r
</tt> option to be explicitly given.
364 Override the up-to-date check.
375 Don't actually remove any file(s). Instead, just show
376 if they exist in the index and would otherwise be removed
385 Allow recursive removal when a leading directory name is
394 This option can be used to separate command-line options from
395 the list of files, (useful when filenames might be mistaken
396 for command-line options).
404 Use this option to unstage and remove paths only from the index.
405 Working tree files, whether modified or not, will be
414 Exit with a zero status even if no files matched.
425 <tt>git rm
</tt> normally outputs one line (in the form of an
<tt>rm
</tt> command)
426 for each file removed. This option suppresses that output.
431 <h2 id=
"_discussion">DISCUSSION
</h2>
432 <div class=
"sectionbody">
433 <div class=
"para"><p>The
<file
> list given to the command can be exact pathnames,
434 file glob patterns, or leading directory names. The command
435 removes only the paths that are known to git. Giving the name of
436 a file that you have not told git about does not remove that file.
</p></div>
437 <div class=
"para"><p>File globbing matches across directory boundaries. Thus, given
438 two directories
<tt>d
</tt> and
<tt>d2
</tt>, there is a difference between
439 using
<tt>git rm 'd*'
</tt> and
<tt>git rm 'd/*'
</tt>, as the former will
440 also remove all of directory
<tt>d2
</tt>.
</p></div>
442 <h2 id=
"_removing_files_that_have_disappeared_from_the_filesystem">REMOVING FILES THAT HAVE DISAPPEARED FROM THE FILESYSTEM
</h2>
443 <div class=
"sectionbody">
444 <div class=
"para"><p>There is no option for
<tt>git rm
</tt> to remove from the index only
445 the paths that have disappeared from the filesystem. However,
446 depending on the use case, there are several ways that can be
448 <h3 id=
"_using_git_commit_a">Using
"git commit -a"</h3><div style=
"clear:left"></div>
449 <div class=
"para"><p>If you intend that your next commit should record all modifications
450 of tracked files in the working tree and record all removals of
451 files that have been removed from the working tree with
<tt>rm
</tt>
452 (as opposed to
<tt>git rm
</tt>), use
<tt>git commit -a
</tt>, as it will
453 automatically notice and record all removals. You can also have a
454 similar effect without committing by using
<tt>git add -u
</tt>.
</p></div>
455 <h3 id=
"_using_git_add_a">Using
"git add -A"</h3><div style=
"clear:left"></div>
456 <div class=
"para"><p>When accepting a new code drop for a vendor branch, you probably
457 want to record both the removal of paths and additions of new paths
458 as well as modifications of existing paths.
</p></div>
459 <div class=
"para"><p>Typically you would first remove all tracked files from the working
460 tree using this command:
</p></div>
461 <div class=
"listingblock">
462 <div class=
"content">
463 <pre><tt>git ls-files -z | xargs -
0 rm -f
</tt></pre>
465 <div class=
"para"><p>and then
"untar" the new code in the working tree. Alternately
466 you could
"rsync" the changes into the working tree.
</p></div>
467 <div class=
"para"><p>After that, the easiest way to record all removals, additions, and
468 modifications in the working tree is:
</p></div>
469 <div class=
"listingblock">
470 <div class=
"content">
471 <pre><tt>git add -A
</tt></pre>
473 <div class=
"para"><p>See
<a href=
"git-add.html">git-add(
1)
</a>.
</p></div>
474 <h3 id=
"_other_ways">Other ways
</h3><div style=
"clear:left"></div>
475 <div class=
"para"><p>If all you really want to do is to remove from the index the files
476 that are no longer present in the working tree (perhaps because
477 your working tree is dirty so that you cannot use
<tt>git commit -a
</tt>),
478 use the following command:
</p></div>
479 <div class=
"listingblock">
480 <div class=
"content">
481 <pre><tt>git diff --name-only --diff-filter=D -z | xargs -
0 git rm --cached
</tt></pre>
484 <h2 id=
"_examples">EXAMPLES
</h2>
485 <div class=
"sectionbody">
486 <div class=
"vlist"><dl>
488 git rm Documentation/\*.txt
492 Removes all
<tt>*.txt
</tt> files from the index that are under the
493 <tt>Documentation
</tt> directory and any of its subdirectories.
495 <div class=
"para"><p>Note that the asterisk
<tt>*
</tt> is quoted from the shell in this
496 example; this lets git, and not the shell, expand the pathnames
497 of files and subdirectories under the
<tt>Documentation/
</tt> directory.
</p></div>
504 Because this example lets the shell expand the asterisk
505 (i.e. you are listing the files explicitly), it
506 does not remove
<tt>subdir/git-foo.sh
</tt>.
511 <h2 id=
"_see_also">SEE ALSO
</h2>
512 <div class=
"sectionbody">
513 <div class=
"para"><p><a href=
"git-add.html">git-add(
1)
</a></p></div>
515 <h2 id=
"_author">Author
</h2>
516 <div class=
"sectionbody">
517 <div class=
"para"><p>Written by Linus Torvalds
<torvalds@osdl.org
></p></div>
519 <h2 id=
"_documentation">Documentation
</h2>
520 <div class=
"sectionbody">
521 <div class=
"para"><p>Documentation by Junio C Hamano and the git-list
<git@vger.kernel.org
>.
</p></div>
523 <h2 id=
"_git">GIT
</h2>
524 <div class=
"sectionbody">
525 <div class=
"para"><p>Part of the
<a href=
"git.html">git(
1)
</a> suite
</p></div>
528 <div id=
"footer-text">
529 Last updated
2010-
02-
13 00:
59:
55 UTC