假设我有一个配置文件目录。我希望此目录和子目录下的所有内容都被忽略,但起始名称为
example.
的除外。
我尝试了一些方法,但它们都不起作用,而且大多数方法都会导致 config-files 目录下的所有文件都无法跟踪。这是我尝试做的两个例子:
# Ignore everything in the config-files directory
/config-files/**
# Allow tracking of files starting with "example."
!/config-files/**/example.*
# Ignore everything in the config-files directory
/config-files/*
# Allow tracking of files starting with "example."
!/config-files/example.*
!/config-files/**/example.*
注意: 配置文件本身由
db
、jwt
等子目录组成
文档的关键规则是:
如果排除了文件的父目录,则无法重新包含该文件。出于性能原因,Git 不会列出排除的目录,因此包含文件的任何模式都无效,无论它们在哪里定义。
所以如果你有这棵树:
.
└── config-files
├── a
│ ├── example.txt
│ └── ignore-me.txt
├── b
│ ├── example.txt
│ └── ignore-me.txt
└── c
├── example.txt
└── ignore-me.txt
然后规则
/config-files/*
或/config-files/**
忽略路径config-files/a
,而git甚至不检查里面的文件.
要解决这个问题,您需要指定规则只匹配文件,而不是整个目录。例如:
# Ignore files inside the config-files sub-directories
/config-files/**/*.*
# Allow tracking of files starting with "example."
!/config-files/**/example.*