【问题标题】:GitIgnore ! File in Subdirectories忽略!子目录中的文件
【发布时间】:2014-02-13 20:24:59
【问题描述】:

我的 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,它与 .gitignore 文件位于同一目录中。我的意图不是忽略嵌套 init 目录中的 _init.example 文件,但我的配置没有正确执行此操作。

任何想法我做错了什么?

【问题讨论】:

  • 我能问一下你的git status说什么吗?

标签: git ignore subdirectory inverse


【解决方案1】:

问题在于* 排除了 conf 子目录,因此不会再针对它评估进一步的规则。然后相同的参数适用于随后的 init 子目录,依此类推。

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

*
!conf

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

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

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

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

此外,最近添加到 git 的 git check-ignore 对于调试更复杂的忽略场景很有用,但是,再次主观地,我不想一开始就进入它们。

【讨论】:

  • 谢谢!我听从了您的主观建议,结果是一个清晰、有效的配置。
猜你喜欢
  • 2016-04-05
  • 2020-03-22
  • 2013-05-16
  • 2017-06-29
  • 2022-10-03
  • 2021-12-20
  • 2011-02-02
  • 2020-08-22
  • 1970-01-01
相关资源
最近更新 更多