From: Bruce Stephens Date: Thu, 15 Nov 2007 12:49:21 GMT Subject: Odd .gitignore behaviour Message-ID: <80ir431xny.fsf@tiny.isode.net> Perhaps I'm misreading the manpage, but I think this is wrong: % mkdir base; cd base % git init % mkdir -p sub1/sub2 % cd sub1 % echo foo > .gitignore; echo '!sub2/foo' >> .gitignore % touch sub2/foo % git add sub2/foo The following paths are ignored by one of your .gitignore files: sub1/sub2/foo Use -f if you really want to add them. fatal: no files added So sub1/sub2/foo matches the first pattern in sub1/.gitignore, but it also matches the negated pattern '!sub2/foo' (in the same file, so precedence isn't an issue). And the manpage says o 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. So surely sub1/sub2/foo ought to be included again? Or is the first line in sub1/.gitignore not "a previous pattern" in this sense? If I move the "foo" pattern up a level, creating a .gitignore in base just containing "foo", then sub1/sub2/foo is still regarded as ignored, even though it surely matches the negating pattern sub1/.gitignore, and that should be of higher precedence than the pattern in base/.gitignore?