GitIgnore! Subdirectories中的文件

时间:2014-02-13 20:24:59

标签: git ignore subdirectory inverse

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

  

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

git ignore写成:

# Ignore all files except the examples.

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

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

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题是*排除了 conf 子目录,因此不会再评估其他规则。然后,相同的参数适用于后续的 init 子目录,依此类推。

通常,通过包含要检查的目录来撤消*,例如:

*
!conf

根据你的git版本,你可能需要继续添加,

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

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

以下是主观的:我总是发现在存储库中有一个顶级.gitignore文件更容易,其中所有忽略都是明确拼写的,再加上文件扩展的简单通配符。

此外,最近对git的git check-ignore增加对于调试更复杂的忽略场景非常有用,但是,主观地说,我不想再开始使用它们。