git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: automatically removing missing files beneath a directory

From
Geoffrey Irving <irving@naml.us>
Date
May 8, 2008, 17:12 UTC
Message-ID
<7f9d599f0805081012ke0b342ct55a3aac1b37b158a@mail.gmail.com>
In-Reply-To
<20080508164456.GA29103@sigill.intra.peff.net>
On Thu, May 8, 2008 at 9:44 AM, Jeff King <peff@peff.net> wrote:
Show 18 quoted lines
> On Thu, May 08, 2008 at 09:39:22AM -0700, Geoffrey Irving wrote:
>
>> If I have a subdirectory in a git repository, and I remove some files
>> without telling git, is there is a simple way to automatically run the
>> equivalent of 'git rm' for all the missing files?  git commit -a would
>> work, except that I only want to remove files beneath a particular
>> subdirectory.  git add <directory> does the equivalent operation for
>> adding files, but I don't see a way to automatically remove them
>> without parsing the output of git status.
>
> See "git add -u", which will update the status of all already-tracked
> files in paths you specify. Note that this will also stage changes in
> modified files. If you truly want to just mark all removed files, you
> can do something like:
>
>  git ls-files --deleted -z | xargs -0 git rm
>
> -Peff
Cool.  "git add -u && git add ." does exactly what I want.

This is only indirectly mentioned in the documentation. If you think it's reasonable to mention it more explicitly, I've attached a patch.

Thanks, Geoffrey

From 698a0b7341647a0ce9e7abb36fe9357400e6bb59 Mon Sep 17 00:00:00 2001
From: Geoffrey Irving <irving@naml.us>
Date: Thu, 8 May 2008 10:00:04 -0700
Subject: [PATCH] Explicitly note in documentation that git-add -u removes files.
---
 Documentation/git-add.txt |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index 35e67a0..f7a8b03 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -74,7 +74,8 @@ OPTIONS
 	Update only files that git already knows about. This is similar
 	to what "git commit -a" does in preparation for making a commit,
 	except that the update is limited to paths specified on the
-	command line. If no paths are specified, all tracked files in the
+	command line. Files that are missing are removed (as if 'rm' had
+	been run). If no paths are specified, all tracked files in the
 	current directory and its subdirectories are updated.
 
 \--refresh::
-- 
1.5.4.5
Previous: Jeff KingNext: Jeff King
Message 3 of 5 in “automatically removing missing files beneath a directory”
  1. Geoffrey IrvingMay 8, 2008
  2. Jeff KingMay 8, 2008
  3. Geoffrey IrvingMay 8, 2008
  4. Jeff KingMay 8, 2008
  5. Geoffrey IrvingMay 8, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.