对比
| 维度 | 子模块 | 子树 subtree |
|---|---|---|
| 克隆体验 | 需 --recurse-submodules | 普通克隆即可 |
| 历史 | 独立仓库历史 | 合入本仓库历史 |
| 更新方式 | 更新指针 / --remote | subtree pull/push |
| 贡献回上游 | 直接向子模块仓库提 PR | 用 subtree split 生成提交 |
| 适合 | 共享库、插件 | 少量嵌入式代码、单仓构建 |
快速判断
快速判断
组件独立发版、被多仓复用 → 子模块
只想单仓构建、改动频率低 → 子树
需要严格版本对齐与审计 → 子模块 + 固定指针两种方案都要求团队约定更新节奏;混用时更新责任不清,通常只选一种。