Git嵌套仓库Gitignore配置求助:主仓库与子仓库规则冲突
解决方案
主仓库(A)的.gitignore配置
修改主仓库根目录的.gitignore,核心是先让Git能扫描到my-theme目录(父目录被直接忽略的话,子目录的不忽略规则会失效),再精准保留需要追踪的内容:
# 忽略根目录下所有内容 /* # 不忽略backups目录及其所有子内容 !/backups/ !/backups/** # 允许Git扫描my-theme目录(否则无法识别内部的local目录) !/content/themes/my-theme/ # 忽略my-theme目录下除local之外的所有内容 /content/themes/my-theme/* # 不忽略local目录及其所有子内容 !/content/themes/my-theme/local/ !/content/themes/my-theme/local/**
嵌套仓库(B)的.gitignore配置
在content/themes/my-theme目录(嵌套仓库B的根目录)下,设置.gitignore忽略local目录内容:
# 忽略local目录下的所有文件和子目录,保留local目录本身 /local/* # 若需连local目录本身也忽略,替换为: # /local/
关键操作步骤
- 主仓库根目录下执行,清除Git缓存(解决之前规则生效不及时的问题):
git rm -r --cached .
- 添加需要追踪的目录:
git add backups/ content/themes/my-theme/local/
- 提交修改:
git commit -m "Update gitignore rules to track required directories"
注意事项
- 主仓库A和嵌套仓库B是独立的Git仓库,各自的
.gitignore规则互不影响:B忽略local是为了不把该目录内容提交到B的仓库,而A追踪local是为了把该目录内容提交到A的仓库,两者逻辑不冲突。 - 若你之前用了
git subtree,确认subtree的追踪范围,避免和主仓库的目录规则重复或遗漏。
内容的提问来源于stack exchange,提问作者codifier
相关产品推荐
相关产品推荐

