这是我的“root”.gitignore
的内容# exclude everything ...
*
# ...except
!/.gitignore
!*/
!/modules/wp-azth/**
问题是,在modules文件夹下,我有很多第三方模块,里面有.gitignore文件。
使用上述规则,所有第三方模块文件夹都会被忽略,但它们的.gitignore文件不会被忽略(当然我不需要它)
有没有办法忽略忽略子文件夹中的.gitignore文件?也许.git / config可以用于此吗?
(我认为git的一个不好的行为即使被忽略也会考虑它们)
UPDATE :似乎缺少git,它允许忽略文件夹“任意”取消忽略自己在一个被忽略的子目录中放置(由任何人)放置的gitignore文件中的!.gitignore规则。 忽略的文件夹通常可能包含动态,临时或第三方(缓存,临时,插件等)的文件...因此git允许仅使用简单的。.gitignore作为子目录中的规则来创建不需要的行为。
答案 0 :(得分:2)
* .gitignore会工作,但是git仍然会跟踪它已经跟踪的.gitignore文件
正在运行的两个命令之间唯一不同的是我将*.gitignore
(通过您在中间看到的命令)添加到我的根级.gitignore
文件。
可选前缀“!”否定了这种模式;任何匹配的文件 被先前模式排除的内容将再次被包括在内。
来自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文件。但现在它可以工作。