在我的仓库中,我有以下目录结构:
/
|-dir1
| |-file1
| |-file2
| |-file3
|-dir2
| |-file4
| |-file5.derp
| |-file6
|-dir3
|-file7
|-file8
我的.gitignore
文件(位于根目录)如下:
dir2/
!dir2/*.derp
然而,file5.derp
从来没有被git add
...
我在这里想念什么?
试试这样的 .gitignore :
dir2/*
!dir2/*.derp
每个 gitignore 手册页:http ://www.kernel.org/pub/software/scm/git/docs/gitignore.html
如果模式以斜线结尾,则出于以下描述的目的将其删除,但它只会找到与目录的匹配项。换句话说, foo/ 将匹配目录 foo 和它下面的路径,但不会匹配常规文件或符号链接 foo(这与 pathspec 在 git 中的一般工作方式一致)。
我怀疑它忽略了该目录中的所有文件,而没有达到使用 ! 进行检查的程度。
你将不得不拥有它:
dir2/*
!dir2/*.derp
在您尝试的操作中dir2/
, 显然会忽略该目录,并且 git 不会进入该目录以取消忽略.derp
文件。在上述情况下,它会忽略所有子级dir2
而不是dir2
自身,因为dir2/*
然后您取消忽略.derp
文件