.gitignore的配置并不复杂,但是今天工作的时候遇到了一个问题,想利用.gitignore的取反进行配置,却怎么也不起作用,谷歌半天最后找到了答案。
需求: 希望不提交 bundle目录下的所有内容,除了其中的bundle/ios/config.adoc文件,一开始我是这么写的
bundle/
!bundle/ios/index.add.adoc
但是很遗憾没有生效,因为如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用"!"规则是不起作用的。git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。
所以对于这种情况,我们不能排除掉index.add.adoc的父级目录,也就是以下的写法
# 注意,最后一定要加上*号,否则就是排除了父级目录
bundle/ios/*
!bundle/ios/index.add.adoc
# 如果bundle下还有其他目录,还要一个一个进行排除。。。
bundle/android/