.gitignore 忽略除了与某些顶级子目录关联的嵌套子目录中具有某些扩展名的文件之外的所有内容

.gitignore to ignore everything aside from files with certain extensions in nested subdirectories associated with some top level subdirectories

我希望 git 忽略所有文件,除了那些埋藏在一组特定子目录中的具有几个不同扩展名的文件。

例如,假设我有一个包含以下子目录的目录:

subdir1
subdir2
subdir3
subdir4
subdir5
...

每个子目录包含任意数量的嵌套子目录。扩展名为 .txt.pdf 的文件可能存在于某些嵌套子目录中。我想让 repo 只跟踪 .txt.pdf 文件在 subdir2subdir3 中的某处,而不跟踪其他文件。

请解释您的解决方案为何有效。

如果您想忽略 ALL 文件,请期望目录 subdir2/subdir3/ 中的所有 .pdf.txt 文件, 将以下内容添加到 gitignore:

# Ignore everything
*
!*/

# But not these files
!.gitignore
!subdir2/**/*.pdf
!subdir2/**/*.txt
!subdir3/**/*.pdf
!subdir3/**/*.txt

subdir/** 匹配任何 subdir/ 目录及其所有子目录中的 所有文件 目录 ! 否定后面的模式。因此,您可以忽略所有 除了 所需目录中的 .pdf.txt 文件。

文件夹结构如下:

|-- folder
    |-- .git
    |-- .gitignore
    |-- subdir1/
        |-- <folder content>
    |-- subdir2/
        |-- <folder content>
    |-- subdir3/
        |-- <folder content>
    |-- subdir4/
        |-- <folder content>
    |-- subdir5/
        |-- <folder content>