码迷,mamicode.com
首页 > 其他好文 > 详细

git submodule 解析

时间:2014-07-25 03:11:44      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   使用   文件   2014   re   c   

submodule 原理
 

submodule 是一个版本库,跟你的主版本库实际上是一个东西。

 
将 submodule add 到你的主版本库,是将一个子版本库的一条提交,也就是head,被主版本库纪录了下来。 主版本库使用这个版本库head之前的代码。
 
git 是一个文件系统,子版本库的remote地址和这个版本库的head,这些纪录究竟保存在哪里呢。
 
我们来具体操作一下
 bubuko.com,布布扣
bubuko.com,布布扣
我在自己项目中添加了一个临时分支,_my_br, 在这个分支下做下实验
 
bubuko.com,布布扣
尝试将sqlite作为子版本加入到主版本库中
看一下git status
bubuko.com,布布扣
bubuko.com,布布扣
多了一个.gitmodules, 这里面包括sqlite版本库的.git文件路径,也就是主版本库对子版本库的索引
bubuko.com,布布扣
bubuko.com,布布扣
url 是子版本库的地址,path在主版本库中的目录地址,子版本库head,就存在这个目录里,进去看以下
bubuko.com,布布扣
bubuko.com,布布扣
f69b89a078e2200fee54a9f897e6957bd627d8b7 就是引用的sqlite的head提交,可以验证以下
bubuko.com,布布扣
bubuko.com,布布扣
一模一样。
 
add submodule 就在git的文件目录里做了以上的事情。
 
这是submodule的创建
 
如果submodule有了新的提交项,如何更新到主版本库中的索引呢
 
在sqlite3中提交一项
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
head为4a62cb12e3e806a6a7cf016b60422182a5f93df1
回到主版本库
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
把它交上去
这时候看以下主版本库中的head
bubuko.com,布布扣
bubuko.com,布布扣
也已经更新了
 
后面就主版本库子版本库就各自push上去就可以了
 
submodule的更新,就一句基本满足需求 git submodule update --init --recursive, 所有submodule都会被更新,这过程中会用到上面提到的url和head索引
 
submodule 删除, 这个需要手动删除了
.gitmodules .git/config 这两个文件中删除sqlite对应部分, .git/modules/ 目录中删除 sqlite目录

git submodule 解析,布布扣,bubuko.com

git submodule 解析

标签:style   blog   http   使用   文件   2014   re   c   

原文地址:http://www.cnblogs.com/familymrfan/p/3866811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!