我有以下文件&我的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文件,但我的配置没有正确执行此操作。
任何想法我做错了什么?
答案 0 :(得分:1)
问题是*
排除了 conf 子目录,因此不会再评估其他规则。然后,相同的参数适用于后续的 init 子目录,依此类推。
通常,通过包含要检查的目录来撤消*
,例如:
*
!conf
根据你的git版本,你可能需要继续添加,
!conf/init
!conf/init/_init.example
但根据我的经验,最好完全避免使用非叶.gitignore
文件中的星号。只需要具体说明要排除的文件,在必要时重新创建目录结构,作为.gitignore
层次结构的一部分。
以下是主观的:我总是发现在存储库中有一个顶级.gitignore
文件更容易,其中所有忽略都是明确拼写的,再加上文件扩展的简单通配符。
此外,最近对git的git check-ignore
增加对于调试更复杂的忽略场景非常有用,但是,主观地说,我不想再开始使用它们。