Search code examples
gitgitignoreignore

Git Ignore strangeness


In my repo I have the following directory structure:

/
|-dir1
|    |-file1
|    |-file2
|    |-file3
|-dir2
|    |-file4
|    |-file5.derp
|    |-file6
|-dir3
     |-file7
     |-file8

My .gitignore file (located at the root) is as follows:

dir2/
!dir2/*.derp

However, file5.derp is never found by git add...

What am I missing here?


Solution

  • Try a .gitignore like this:

    dir2/*
    !dir2/*.derp
    

    Per gitignore man page: http://www.kernel.org/pub/software/scm/git/docs/gitignore.html

    If the pattern ends with a slash, it is removed for the purpose of the following description, but it would only find a match with a directory. In other words, foo/ will match a directory foo and paths underneath it, but will not match a regular file or a symbolic link foo (this is consistent with the way how pathspec works in general in git).

    I suspect it's ignoring all files in that directory and not getting to the point where it would check using !.