Git 多仓库同步:个人仓库保留开发文档,团队仓库只推送干净代码
日期: 2026-04-28 场景: 个人开发使用 AI 辅助工具(Claude Code)产生大量开发过程文档,团队仓库需要保持干净
问题
开发过程中会产生很多不适合提交到团队仓库的文件:CLAUDE.md、.planning/、.specstory/、*-REPORT.md。同时项目有两个独立 Git 仓库(非 fork 关系):origin(个人 GitLab,保留一切)和 team(团队 GitLab,只推干净代码)。核心矛盾:一个本地 .git,两个 remote,需要不同的文件集。
方案:分支策略
main (本地) ──── git push origin main ────→ 个人仓库(完整)
│
└── push-to-team.sh ── 剥离后推送 ──→ 团队仓库(干净)
用 Git plumbing 命令在推送时合成一个不含开发文档的 commit,本地 main 完全不动。
核心原理
Git 的底层命令可以在不触碰工作区和索引的情况下构造 commit:read-tree、write-tree、commit-tree。通过 GIT_INDEX_FILE 环境变量使用临时索引,不影响主索引。合成的 commit 推送后即丢弃,本地不留痕迹。
适用场景
- 个人 fork → 上游 repo
- 两个独立 repo,不同 .gitignore 需求
- 需要长期维护双仓库
用 Git plumbing 命令在推送时合成剥离 commit,本地分支不动,一个命令搞定双仓库不同文件集的同步。