首页 > 代码库 > git submodule 解析
git submodule 解析
submodule 原理
submodule 是一个版本库,跟你的主版本库实际上是一个东西。
将 submodule add 到你的主版本库,是将一个子版本库的一条提交,也就是head,被主版本库纪录了下来。 主版本库使用这个版本库head之前的代码。
git 是一个文件系统,子版本库的remote地址和这个版本库的head,这些纪录究竟保存在哪里呢。
我们来具体操作一下
我在自己项目中添加了一个临时分支,_my_br, 在这个分支下做下实验
尝试将sqlite作为子版本加入到主版本库中
看一下git status
多了一个.gitmodules, 这里面包括sqlite版本库的.git文件路径,也就是主版本库对子版本库的索引
url 是子版本库的地址,path在主版本库中的目录地址,子版本库head,就存在这个目录里,进去看以下
f69b89a078e2200fee54a9f897e6957bd627d8b7 就是引用的sqlite的head提交,可以验证以下
一模一样。
add submodule 就在git的文件目录里做了以上的事情。
这是submodule的创建
如果submodule有了新的提交项,如何更新到主版本库中的索引呢
在sqlite3中提交一项
head为4a62cb12e3e806a6a7cf016b60422182a5f93df1
回到主版本库
把它交上去
这时候看以下主版本库中的head
也已经更新了
后面就主版本库子版本库就各自push上去就可以了
submodule的更新,就一句基本满足需求 git submodule update --init --recursive, 所有submodule都会被更新,这过程中会用到上面提到的url和head索引
submodule 删除, 这个需要手动删除了
.gitmodules .git/config 这两个文件中删除sqlite对应部分, .git/modules/ 目录中删除 sqlite目录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。