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

[PATCH 2/2] gitignore.txt: clarify recursive nature of excluded directories

From
Karsten Blees <karsten.blees@gmail.com>
Date
Nov 7, 2013, 21:36 UTC
Message-ID
<527C07DD.9090809@gmail.com>
In-Reply-To
<20131107205732.GA16564@sigill.intra.peff.net>

Additionally, precedence of negated patterns is exactly as outlined in the DESCRIPTION section, we don't need to repeat this.

Signed-off-by: Karsten Blees <blees@dcon.de>
---
I also force-pushed to git://github.com/kblees/git.git kb/gitignore-doc.
 Documentation/gitignore.txt | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt
index f971960..205e80e 100644
--- a/Documentation/gitignore.txt
+++ b/Documentation/gitignore.txt
@@ -79,8 +79,10 @@ PATTERN FORMAT
 
  - An optional prefix "`!`" which negates the pattern; any
    matching file excluded by a previous pattern will become
-   included again.  If a negated pattern matches, this will
-   override lower precedence patterns sources.
+   included again. It is not possible to re-include a file if a parent
+   directory of that file is excluded. Git doesn't list excluded
+   directories for performance reasons, so any patterns on contained
+   files have no effect, no matter where they are defined.
    Put a backslash ("`\`") in front of the first "`!`" for patterns
    that begin with a literal "`!`", for example, "`\!important!.txt`".
 
@@ -182,6 +184,19 @@ Another example:
 The second .gitignore prevents Git from ignoring
 `arch/foo/kernel/vmlinux.lds.S`.
 
+Example to exclude everything except a specific directory `foo/bar`
+(note the `/*` - without the slash, the wildcard would also exclude
+everything within `foo/bar`):
+
+--------------------------------------------------------------
+    $ cat .gitignore
+    # exclude everything except directory foo/bar
+    /*
+    !/foo
+    /foo/*
+    !/foo/bar
+--------------------------------------------------------------
+
 SEE ALSO
 --------
 linkgit:git-rm[1],
-- 
1.8.4.msysgit.1
Previous: Jeff KingNext: Junio C Hamano
Message 10 of 11 in “Improve gitignore documentation wrt excluded directories”
  1. 0/2 Improve gitignore documentation wrt excluded directoriesKarsten Blees, Nov 7, 2013
  2. 1/2 gitignore.txt: fix documentation of "**" patternsKarsten Blees, Nov 7, 2013
  3. Junio C HamanoNov 7, 2013
  4. 2/2 gitignore.txt: clarify recursive nature of excluded directoriesKarsten Blees, Nov 7, 2013
  5. Junio C HamanoNov 7, 2013
  6. Junio C HamanoNov 7, 2013
  7. Jeff KingNov 7, 2013
  8. Karsten BleesNov 7, 2013
  9. Jeff KingNov 7, 2013
  10. 2/2 gitignore.txt: clarify recursive nature of excluded directoriesKarsten Blees, Nov 7, 2013
  11. Junio C HamanoNov 7, 2013

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.