我排除了文件夹 a 及其子文件夹,但希望包含特定的子文件夹 b,其中 b 可以是 a 下面某个位置的子文件夹,并且尚未指定 b 的确切路径。
我的.gitignore
包含这些行:
a/**
!a/**/b
但是这不起作用。已经尝试了上述的许多其他排列,包括来自堆栈溢出的其他帖子,但似乎没有任何效果。
上一个有关 stackoverflow 的问题涉及可以显式声明子目录路径的情况。在这个问题中,我要解决的情况是 b
可以是 a
下的任何子文件夹,而不是预定路径。
此外,早期的解决方案要求您“取消忽略”您想要“取消忽略”的任何内容的每个父目录。然而,在这种情况下,我试图创建一个通用规则,允许该子目录,而不必担心它在目录树中的位置。因此,早期的解决方案在这种情况下不起作用/适用。
最佳答案
如果你告诉 git 忽略一个目录,它将完全忽略该目录中的所有内容。这意味着 git 无法匹配您的排除,因为 git 根本不查看它。
以有意义的方式使用排除的唯一方法是针对单个目录,在其中忽略除某些文件夹之外的所有内容,如下所示:
/some/path/*
!/some/path/foo
这将忽略除直接在 /some/path
下的 foo
之外的所有条目。
但是,大多数时候,明确地忽略某些内容比使用排除要清楚得多。
关于当 .gitignore 中排除了父文件夹时,Git 包含任意嵌套的子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20839642/