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

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

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 7, 2013, 18:57 UTC
Message-ID
<xmqqa9hg59av.fsf@gitster.dls.corp.google.com>
In-Reply-To
<527BC068.3040303@gmail.com>
Karsten Blees <karsten.blees@gmail.com> writes:
> Additionally, precedence of negated patterns is exactly as outlined in
> the DESCRIPTION section, we don't need to repeat this.
Very good, thanks.

Even though I have a suspicion that somebody else may be able to come up with a better phrase that does not sound unnecessarily strongly than "recursively and irrevocably", that somebody else is not me, so I'll queue this as-is for now.

Show 42 quoted lines
>
> Signed-off-by: Karsten Blees <blees@dcon.de>
> ---
>  Documentation/gitignore.txt | 18 ++++++++++++++++--
>  1 file changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt
> index f971960..5ecc48e 100644
> --- a/Documentation/gitignore.txt
> +++ b/Documentation/gitignore.txt
> @@ -79,8 +79,9 @@ 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 (i.e. excluding a directory
> +   will recursively and irrevocably exclude the entire content).
>     Put a backslash ("`\`") in front of the first "`!`" for patterns
>     that begin with a literal "`!`", for example, "`\!important!.txt`".
>  
> @@ -182,6 +183,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],
Previous: Karsten BleesNext: Junio C Hamano
Message 5 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.