git submodule的理解

一般项目都会引用一些开源的库,或者将一些可以开源的库独立出来的时候,可以通过submodule管理起来。一般来说submodule需要维持一个基线,除非我们确认确实可以升级他。

假设我现在两个项目都使用了一个库, 第一个项目使用了库的一个Post()方法 然后第一个项目停止开发了。 到了第二个项目,由于需求不同,而且恰好一定需要将Post()改成Post(name string),无法做兼容性修改。如果这时候项目一有自己对库依赖的基线,他可以不用使用新版本的库。

添加

git submodule add <repo> <destpath>

然后进入submodule,checkout成我们要的版本。加入git

git add <lib>

这时候已经添加完成了

部署

git submodule init
git submodule update #相当于进入所有库里面进行checkout到记录的版本

正常来说上面两步就完成了

开发库

cd <submodule>
xxxx
git commit -am "xxx"
cd ../
git add <submodule>
git commit -m "update submodule"

Comments