如何在Git主仓库中追踪子仓库内容并忽略其自身.git文件夹?
需求可行性说明
该需求完全可以实现,核心逻辑是让主仓库忽略子仓库的.git文件夹,同时清除Git对嵌套仓库的特殊识别标记,将子仓库内容作为普通目录纳入主仓库追踪即可。
具体操作步骤
所有操作均在主仓库根目录执行,注意将下文的sub-repo替换为你实际的子仓库相对路径:
- 第一步:配置主仓库忽略规则,在主仓库的
.gitignore文件中添加如下内容,避免主仓库追踪子仓库的Git元数据:sub-repo/.git/ - 第二步:清除Git已记录的嵌套仓库特殊标记(gitlink),该命令仅移除Git缓存中的标记,不会删除本地子仓库的实际文件:
git rm --cached sub-repo - 第三步:将子仓库的所有普通文件添加到主仓库暂存区,此时因为已经配置了忽略规则,子仓库的
.git文件夹不会被纳入暂存:git add sub-repo/ - 第四步:提交改动到主仓库即可:
git commit -m "将子仓库作为普通目录纳入主仓库追踪,忽略其自身Git属性"
注意事项
- 子仓库自身的Git功能不受影响:你仍然可以进入子仓库目录,执行pull、push等操作同步到子仓库的remote2,主仓库完全感知不到这部分操作。
- 若需要将子仓库的最新内容同步到主仓库,直接在主仓库根目录执行
git add sub-repo/后提交即可,和操作普通目录完全一致。 - 如果你后续不需要保留子仓库自身的版本管理能力,也可以直接删除子仓库目录下的
.git文件夹,无需再配置.gitignore规则,操作更彻底,但该操作会导致子仓库无法再同步到remote2,请按需选择。
内容的提问来源于stack exchange,提问作者Nagabhushan S N
相关产品推荐
相关产品推荐

