1 - 仓库共用(子仓库、子项目)
两种子仓库使用方式
- git submodule(子模块)
- git subtree(子树合并)
从1.5.2版本开始,官方新增Git Subtree并推荐使用这个功能来替代Git Submodule管理仓库共用(子仓库、子项目)
2 - submodule 与 subtree 对比
2.1 git submodule
- 可以将其他仓库某个commit作为仓库的子目录
- 克隆仓库需要额外的步骤 init 和 update
- 产生
.gitmodule
文件记录和submodule版本信息 - 删除submodule步骤繁琐
- 可以在子仓库单独查看子仓库的修改记录,相当与在一个单独的仓库内,对外层父仓库不可见
2.2 git subtree
- 官方推荐方式
- 不增加
.gitmodule
等文件 - 管理和更新流程简洁,对于项目中的其他成员透明(意味着可以不知道subtree的存在)
- 本质就是把子项目目录作为一个普通的文件目录,对于父级的主项目来说是完全透明的,原来是怎么操作现在依旧是那么操作
- 无法直接单独查看子仓库的修改记录,因为子仓库的修改包含在父仓库的记录中了。
3 - subtree
3.1 在父仓库中新增子仓库
cd <父仓库>
git subtree add --prefix=<子仓库在父仓库的相对路径> <子仓库地址> <branch> --squash
- 1
- 2
- 3