github中的子模块(git submodule)
git中支持引用另外一个开源库,并且可以指定依赖的分支或者提交记录号。
比如fltk-rs 库的fltk-sys
模块依赖了库 cfltk 并指明了依赖的提交是 8a56507
甚至可以嵌套,毕竟库自身也不知道自己给别人当了子。比如上面这个 cfltk 又依赖了 fltk @ 324fcfc
但是如果你单纯使用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>"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-05-11 量子位(qubit)发微