You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免在src子文件夹的.gitignore中重复配置!.gitignore?

问题:子文件夹的.gitignore被自身忽略,根目录规则不生效

目录结构

src/下的每个子文件夹都包含.gitignore文件,目录结构如下:

.
├── chartbrew
│	├── compose.yaml
│	├── .env
│	├── .gitignore
│	└── README.md
├── directus
│	├── compose.yaml
│	├── .env
│	├── extensions
│	├── .gitignore
│	├── README.md
│	└── uploads
├── lcmp
│	├── compose.yaml
│	├── .env
│	├── .gitignore
│	├── public
│	└── README.md
├── metabase
│	├── compose.yaml
│	├── .env
│	├── .gitignore
│	└── README.md
└── uptime-kuma
    ├── compose.yaml
    ├── .env
    ├── .gitignore
    └── README.md

子文件夹的.gitignore内容

每个子文件夹的.gitignore至少包含以下内容(可能略有差异):

*
!compose.yaml
!README.md

遇到的问题

目前整体运行正常,但每个子文件夹的.gitignore文件会被自身的规则忽略。尝试在根目录添加.gitignore文件,写入!src/*/.gitignore,但规则未生效。不想逐个在子文件夹的.gitignore中添加!.gitignore进行重复操作。

解决方案

根目录.gitignore正确写法

编辑根目录的.gitignore,替换为以下内容:

# 确保src目录及子文件夹不被忽略(Git需遍历到子目录才能应用否定规则)
!src/
!src/*/
# 允许提交所有子文件夹中的.gitignore
!src/**/.gitignore

强制重新识别已忽略文件

如果之前子文件夹的.gitignore已被标记为忽略,执行以下命令让Git重新追踪这些文件:

git add src/*/.gitignore --force

原理说明

子文件夹内的.gitignore用*匹配了所有文件(包括自身),而Git的规则是子目录的.gitignore优先级高于根目录,直接写!src/*/.gitignore无法覆盖子目录的忽略规则。先确保子文件夹本身不被忽略,Git才能遍历进去应用根目录的否定规则,从而让子文件夹的.gitignore被正常提交。

内容的提问来源于stack exchange,提问作者gremo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:43:22