github中的子模块(git submodule)

git中支持引用另外一个开源库,并且可以指定依赖的分支或者提交记录号。

比如fltk-rs 库的fltk-sys模块依赖了库 cfltk 并指明了依赖的提交是 8a56507
image

甚至可以嵌套,毕竟库自身也不知道自己给别人当了子。比如上面这个 cfltk 又依赖了 fltk @ 324fcfc
image

但是如果你单纯使用git clone {url} 去拉取代码,嵌套的库并不会被克隆下来,这样你本地编译免不了失败。

应该怎么做呢?

使用Git Submodules机制,可以将一个Git仓库作为另一个Git仓库的子目录使用。

以下是使用Git Submodules的详细步骤:

在主仓库中添加子模块

git submodule add https://github.com/user/repo

这将从给定的URL创建一个子模块,并将其添加到主仓库中。

指定分支

如果你只是想更新子模块的引用而没有更改子模块内部的任何文件,可以使用以下命令:
git submodule set-branch --branch <new_branch> path_to_submodule
然后进入子模块,检出对应分支git checkout <desired-branch-name>
返回上一级提交即可。后面的步骤就不需要了。

初始化并更新子模块

git submodule update --init --recursive

这个命令将初始化子模块并拉取其内容,包括嵌套的子模块。

更新子模块到最新的代码

git submodule update --remote

递归地更新所有子模块

git submodule foreach git pull origin master

删除一个子模块

git submodule deinit -f <submodule_path>  
git rm -f <submodule_path>  
git commit -m "Remove submodule <name>"
posted @   大卫小东(Sheldon)  阅读(685)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-05-11 量子位(qubit)发微
点击右上角即可分享
微信分享提示