首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

git submodule代码复用

问题

经常有这样的需求,当你在一个项目上工作时,你需要在其中使用另外一个项目。也许它是一个第三方开发的库或者是你独立开发和并在多个父项目中使用的。这个场景下一个常见的问题产生了:你想将两个项目单独处理但是又需要在其中一个中使用另外一个。在android中,其实就是公共Module单独仓库维护,在需要的时候引入。

git submodule是一个很好的多项目使用共同类库的工具,它允许类库项目做为repository,子项目做为一个单独的git项目存在父项目中,子项目可以有自己独立的git操作。而父项目以submodule的形式包含子项目,父项目可以指定子项目header,父项目中会的提交信息包含Submodule的信息,再clone父项目的时候可以把Submodule初始化。

添加submodule

在项目根目录输入以下命令

dir1:放在本地项目哪个目录下,执行完毕后会看到本地项目目录中多了dir1;

-b master:拉取远端哪个分支

上面命令执行完之后会看到:

执行git submodule 查看:

若显示带减号“-”的记录,标明没有初始化,如:

这时候可以初始化子模块代码,执行以下命令:

以上操作完毕后,本地项目根目录下会多出一个.gitmodule文件,内容如下:

到此,创建git submodule模块成功。

当然,我们也可以拉取项目带有submodule模块,通过以下命令,便可拉取的同时初始化

更新代码

在项目根目录,命令行输入以下命令,便可更新一个或多个submodule模块

如:

删除submodule

在项目中若存在一个子Module了,在执行上面的命令会报错:

所以在重新引入子模块时需要删除它,具体操作如下:

有两个地方需要特别注意:

1、必须删除.git/config下对应子模块的配置

[submodule "uiComponents/publicLib1"]

active = true

2、必须删除.git/Modules下对应子模块目录

.git文件夹下config文件,和 modules文件夹下对应的信息要清楚干净,不然再次添加相同的git submodule模块时会报错

总结

说了这么多,不知道大家有没有搞清楚git submodules的使用。搞清楚使用了,系不系知道代码复用了? 其实就是通过submodule的命令把公共模块代码引入项目代码中,然后在项目代码中使用。该子模块可以修改且通过git 提交命令更新到该子模块对应仓库中,这样另外一个项目更新一下就同步最新代码了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180126G0ZVSA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券