我试图忽略除了
docker-compose.yml
文件之外的所有内容,无论它们在哪里:
- root
- .git/
- .gitignore
- folderA
- docker-compose.yml
- folderB
- .git/
- data/
- docker-compose.yml
在上面的目录示例中,git 唯一应该跟踪的是
docker-compose.yml
文件和 .gitignore
文件。
我尝试了以下.gitignore:
/*
!.gitignore
!docker-compose.yml
还有
/*
!.gitignore
!**docker-compose.yml
还有
/*
!.gitignore
!**/docker-compose.yml
还有
/*
!.gitignore
!/*/docker-compose.yml
我还尝试了上述选项,顶部仅使用
*
而不是 /*
所有这些都会导致仅跟踪 .gitignore 文件。
我可能错过了一些非常愚蠢和小但嘿嗬。预先感谢。
更新
我已经接近解决方案了:
*
!/.gitignore
!*/
!*/docker-compose.yml
现在已成功包含所有 docker-compose.yml 文件,但现在还包含子存储库和一些随机文件,例如
root/nextcloud/data/html/core/vendor/zxcvbn/LICENSE.txt
如果您使用此功能,您可以忽略所有第三级子文件夹
/*/*/*
因此,按照您的示例结构,更新的包含文件将是根文件夹(第一级)中存在的所有文件以及文件夹“.git”、“folderA”和“folderB”(第二级)中存在的所有文件。同时,“folderB”内的文件夹 .git/ 和 data/ (第三级)将被忽略。如果“.git/”为空,你会得到:
- root
- .gitignore
- folderA
- docker-compose.yml
- folderB
- docker-compose.yml
如果您还想排除除 docker-compose.yml 之外的所有其他文件,则需要排除所有扩展名,并仅包含 docker-compose.yml 和 gitignore,如下所示:
/*/*/*
*.*
!.gitignore
!docker-compose.yml
您可以忽略所有
*
(就像你已经做过的那样)
现在您必须知道所有文件的完整路径,您不想忽略这些文件。该路径从
.gitignore
根开始,因此您的 root
文件夹是不必要的
更新的文件夹结构:
- .git/
- .gitignore
- folderA
- docker-compose.yml
- folderB
- .git/
- data/
- docker-compose.yml
作为目录结构的示例,您可以添加以下两个条目:
!folderA/docker-compose.yml
!folderB/docker-compose.yml
似乎顺序在这里很重要,我能够完美地做到这一点:
*
*.*
!^.gitignore
!*/
/*/*/*
!*/docker-compose.yml
感谢您的帮助!