忽略子目录中的gitignore文件

时间:2016-01-01 02:55:03

标签: git gitignore subdirectory

这是我的“root”.gitignore

的内容
# exclude everything ...
*
# ...except
!/.gitignore
!*/
!/modules/wp-azth/**

问题是,在modules文件夹下,我有很多第三方模块,里面有.gitignore文件。

使用上述规则,所有第三方模块文件夹都会被忽略,但它们的.gitignore文件不会被忽略(当然我不需要它)

有没有办法忽略忽略子文件夹中的.gitignore文件?也许.git / config可以用于此吗?

(我认为git的一个不好的行为即使被忽略也会考虑它们)

UPDATE :似乎缺少git,它允许忽略文件夹“任意”取消忽略自己在一个被忽略的子目录中放置(由任何人)放置的gitignore文件中的!.gitignore规则。 忽略的文件夹通常可能包含动态,临时或第三方(缓存,临时,插件等)的文件...因此git允许仅使用简单的。.gitignore作为子目录中的规则来创建不需要的行为。

git gui screenshot

2 个答案:

答案 0 :(得分:2)

* .gitignore会工作,但是git仍然会跟踪它已经跟踪的.gitignore文件

正在运行的两个命令之间唯一不同的是我将*.gitignore(通过您在中间看到的命令)添加到我的根级.gitignore文件。

Showing *.gitignore works

  

可选前缀“!”否定了这种模式;任何匹配的文件   被先前模式排除的内容将再次被包括在内。

来自https://git-scm.com/docs/gitignore

意味着中级.gitignore文件可能包含!*。gitignore,这可能会搞砸更高级别的声明。

答案 1 :(得分:1)

问题是.gitignore目录中的/modules个文件:

git check-ignore -v -n /modules/TC-JSON-API/storage/app/.gitignore 返回:/modules/TC-JSON-API/storage/app/.gitignore:2:!.gitignore /modules/TC-JSON-API/storage/app/.gitignore

然后解决方案只是将/modules/*添加到我的.gitignore

# exclude everything ...
*
# ...except
!/.gitignore
!*/
!/modules/wp-azth/**

成了

# exclude everything ...
*
modules/*
# ...except
!/.gitignore
!*/
!/modules/wp-azth/**

我不明白为什么git需要这种"规范" ...在没有该规则的情况下,在提交中处理/列出被忽略文件夹的.gitignore文件。但现在它可以工作。