Git submodule---切换submodule的分支

Git submodule使用详解
本文深入解析Git submodule功能,包括如何查看、修改submodule版本,以及与cmake `ExternalProject_Add`命令结合使用的方法。通过具体实例,如Paddle-Lite项目中调用gflag和protobuf,阐述了submodule在项目中的作用和操作流程。

背景:什么是submodule,有什么用?

git submodule是git的一个功能,可以将其他的github工程加入到自己的项目里。通常与cmake  `ExternalProject_Add`命令相结合。

下载第三方库,然后编译,在我们的工程中调用。

举例: Paddle-Lite通过submodule调用gflag 和protobuf,编译后作为一个第三方库在Paddle-Lite源码中调用。

(0)如何查看Submodule

git submodule

(1)如何修改submodule -- 修改其版本(github tag)

问题描述:Paddle-Lite调用的protobuf版本为3.1.0 ,通过submodule定义的。(执行时会下载protobuf源码到Paddle-Lite/third-party,然后编译到 build/third_party/install。)  我想修改protobuf版本为3.2.0,如何做到。

解决方法:修改submodule的tag号。

参考:添加Git子模块时如何指定分支/标记?

 

基础概念: git添加一个submodule,只需要添加该module的github源码地址,不需要设置tag。但是submodule下载下来的源码其实是有tag,而且是稳定不会改变的tag。

如何修改:进入到submodule对应的文件夹地址,git checkout <tagname> 切换到你想要的tag , git add dirname 。git commit 、git push.

总的说就是 git submodule 指定第三方库的源地址和下载到那个目录,这个目标目录保存了github信息就是git tag。两者结合实现了submodule 下载第三方库源码并切换到指定分支。所以想换submodule的分支或tag,只需要修改文件夹就可以(git checkout ..)

 

示例代码:

cd submodule_directory
git checkout v1.0
cd ..
git add submodule_directory
git commit -m "moved submodule to v1.0"
git push

注:其他submodule基础方法

(3)运行下面命令可以实现下载submodule源码

git submodule update --init --recursive

(4)其实cmake中的ExternalProject_Add也可以切换分支。但不知道为什么和submodule结合没有成功,最后的分支只是submodule下载的分支。需要继续研究一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值