2014-02-13 41 views
1

我在我的git项目中有以下文件&目录结构。GitIgnore!子目录中的文件

CONF /的.gitignore
CONF/_conf.example
CONF/conf.sh
CONF/INIT/_init.example
CONF/INIT/init.sh

的GIT中忽略写为:

# Ignore all files except the examples. 

* 
!.gitignore 
!_conf.example 
!init/_init.example 

我已经将.gitignore添加到git。除conf.sh之外,所有文件都将被忽略,而conf.sh与.gitignore文件驻留在同一目录中。我的意图是不要忽略嵌套的init目录中的_init.example文件,但我的配置没有正确执行此操作。

任何想法我做错了什么?

+0

我可以问你的'git status'说什么吗? – ForgetfulFellow

回答

1

的问题是,*排除的conf子目录所以没有进一步的规则将永远相对于它进行评估。然后相同的参数适用于后续的init子目录等。

一般情况下,通过包括后面的目录进行检查,例如撤消*

* 
!conf 

,并根据您的git的版本,你可以上得去,并添加,

!conf/init 
!conf/init/_init.example 

但从我的经验来看,最好避免完全在非叶.gitignore文件中的星号。只需具体说明要排除的文件,在必要时重新创建目录结构,作为.gitignore层次结构的一部分。

以下是主观的:我始终发现,在存储库中有一个顶级.gitignore文件比较容易,其中所有忽略都明确拼写出来,再加上文件扩展名的简单匹配。

此外,最近git check-ignore除了git对于调试更复杂的忽略场景很有用,但是,主观上再次,我不喜欢先入门。

+0

谢谢!我遵循了你的主观建议,并产生了一个清晰的工作配置。 – nfarrar