Subject: Re: Q: Ignore ./foo, but not script/foo

From: 3Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Thu, 19 Jul 2018 10:01:46 +0200

On Thu, Jul 19 2018, Ulrich Windl wrote:

> Hi!
>
> I have a (simple) question I could not answer elegantly from the gitignore(5) manual page:
>
> A project produces a "foo" binary in the root directory that I want to ignore (So I put "foo" into .gitignore)
> Unfortunately I found out taht I cannot have a "script/foo" added while "foo" is in .gitignore.
> So I changed "foo" to "./foo" in .gitignore. I can could add "script/foo", but now "foo" is not ignored any more!
>
> Is there as solution other than:?
> --
> foo
> !script/foo
> !bla/foo
> #etc.

The solution is to just do:

    echo /foo >.gitignore

Then it'll ignore the top-level /foo, but nothing else. How did you come
up with this "./" syntax? It's not understood by gitignore. From
gitignore(5):

   A leading slash matches the beginning of the pathname. For example,
   "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".