git ignore / *和!/ ** / somefile *未正确排除

时间:2019-03-21 13:04:04

标签: git gitignore

我的git repo目录如下:

--ignore_dir/
----dir2/
------ignorea3.txt
----aaa.txt
----ignorea2.txt
--ignorea1.txt
--ignore1.txt
--.gitignore

.gitignore文件,如下所示:

/*
!/**/ignorea*.txt

git status一起输出:

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        ignorea1.txt

nothing added to commit but untracked files present (use "git add" to track)

我的问题是为什么它不跟踪文件:ignore_dir/dir2/ignorea3.txtignore_dir/ignorea2.txt

谢谢!

更新
谢谢@RomainValeri和@torek,
我可以通过编辑gitignore文件来实现此目的的复杂方法:

/*
!/ignore_dir/
/ignore_dir/*
!/ignore_dir/dir2/

/ignore_dir/dir2/*
!/ignore_dir/dir2/ignorea*.txt
!/ignore_dir/ignorea*.txt

它可以明确跟踪ignorea*.txt的每个父级目录。

此外,这将不起作用:

/*
!**/ignorea*.txt

希望有人可以给出优雅的方式!

1 个答案:

答案 0 :(得分:1)

来自doc

  

可选的前缀“!”否定了模式;先前模式排除的所有匹配文件将再次包含在内。 如果排除了该文件的父目录,则无法重新添加该文件。

(重点是我的)

因此,由于第一个模式排除了目录.ngb-dp-today { background: yellow; } ignore_dir,因此在下一行重新包含其中的文件将不起作用。


尝试失败:

dir2

但是作为torek mentions below,这不起作用。有待改进。