git subtree用来解决嵌套项目版本管理的问题。
Usage
# 添加子项目,拉取子项目到指定目录
git subtree add --prefix path/of/local/dir subproject-git-address branch --squash
# 拉取子项目更新
git subtree pull -prefix path/of/local/dir branch --squash
--squash表示将子项目的提交记录压缩为一条,否则保留全部子项目的commit log。
先将subproject-address设置为一个remote,此时子项目只是被fetch到本地的一个detach HEAD。
添加子项目后,子项目才被merge到本地项目中。
# 设置远程repo
git remote add -f remote-repo subproject-git-address
# 添加子项目
git subtree add --prefix path/of/local/dir remote-repo branch --squash
# 拉取子项目更新
git fetch remote-repo
git subtree pull --prefix path/of/local/dir remote-repo branch --squash
将子项目修改推送到子项目remote repo
git remote add remote-preo subproject-git-address
git subtree push --prefix path/of/local/dir remote-repo branch