当 .gitignore 中排除了父文件夹时,Git 包含任意嵌套的子文件夹

标签 git github bitbucket gitignore

我排除了文件夹 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/

相关文章:

git - 设置带有大文件的远程 Git 的最佳方法

github - 使用 internetbs 的 github 自定义域

git - 是否可以使用 GitHub Desktop 应用程序提交到 Bitbucket 存储库?

linux - 如何使用 DockerFile 从 git repo 获取源代码

git - 用图形查看本地 git 提交

未调用 Github 操作 check_run

git - 如何将只读的 git 克隆从 github 转换为 fork 的

linux - 从一个分支克隆三个其他分支

git - 在轮询 SCM 时将 ssh-agent 与 jenkins 一起使用

eclipse - 如何更改 EGit 中的默认 pull 策略