软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 研发管理 -> Git使用手册:为Git仓库创建Submodule -> 正文阅读

[研发管理]Git使用手册:为Git仓库创建Submodule


在实际开发中,经常会遇到下图所示的场景,多个不同的项目工程(工程1,工程2,工程3)中有一个相同的功能模块代码(LibA),这些功能模块可能在以后也会被其他项目工程所引用,按照下图所示,哪个工程需要这个LibA就直接将LibA的源代码引入到当下所需要的项目工程中,这样,我们就可以使用LibA所提供的功能进行开发,如果采用这种方式进行开发,将会面临一个问题,LibA中的功能进行了扩充,那么所有引用libA的工程项目就得重新删除旧的LibA然后再将新的LibA的代码引入到工程中,这种流程操作起来非常的不方便,假如我有100个工程引用了LibA,那我就得为100个工程更新LibA,这种开发效率大家可想而知。
[img]http://img.blog.csdn.net/20150207130430688
如果我们将上面这个公共库LibA提取出来,让我们所有需要引用libA功能的工程都依赖于同一份的LibA代码,这样的话,如果其中一个工程中更新了LibA的功能,那么其他工程中由于引用的是同一个LibA,它们也将直接获得新增加进libA的功能,而省去的不断发杂的更新其他项目中的LibA中的流程,这种方式不仅有利于libA功能上的扩展,还有利于当LibA中的代码出现BUG的时候,只要进行一次修复,就可以解决其他依赖的项目工程的问题,这种处理的方式可以大大的提高我们实际开发中的效率。
[img]http://img.blog.csdn.net/20150207130544211
版本管理控制工具Git提供的Submodule(子模块)功能就可以满足我们的这种功能需求,可以解决上诉提出的100个工程就要更新100次LibA代码的问题,大大提高我们在实际开发中效率,接下来我们来看一下,Git是如何使用Submodule来解决我们的问题的。
首先准备好了三个远程的Git仓库(Project1,Project2,CommonLib)分别用于模拟两个开发工程,和一个公共模块,如果不明白如何创建创建远程仓库,可以参看我的另外一篇文章Git仓库创建
[img]http://img.blog.csdn.net/20150207150406966
[img]http://img.blog.csdn.net/20150207150426297
[img]http://img.blog.csdn.net/20150207150440633
再分别为Project1和Project2引入CommonLib作为这两个工程的Submodule(由于接下来的流程Project1和2基本相同,所以只给出Project1的操作流程)
git submodule add 远程仓库地址 添加的目录名

[img]http://img.blog.csdn.net/20150207150518757
使用Git status命令查看一下当前Project1下,你会看到新增了两个文件,一个是submodule,一个是lib文件夹。
[img]http://img.blog.csdn.net/20150207150720689
其中,gitmodules文件存放了Project1依赖的submodule的相关信息,而lib文件夹则是用于存放我们引入的CommonLib模块,查看一下gitmodules文件可以发现文件中的信息是指向Project1所依赖的CommonLib的远程Git仓库的地址,如果Project1依赖了多个不同的submodule,则gitmodules文件中存多个不同的path和url一一对应,其他人clone了Project1工程后也要通过.gitmodules来找到CommonLib,将远程的仓库代码克隆到本地进行使用。
[img]http://img.blog.csdn.net/20150207150756941
接下来将刚刚Project1添加进去submodule同步到远程仓库中,分别执行以下的操作
git add .
git commit -am "相关描述"
git push origin master

[img]http://img.blog.csdn.net/20150207150834462
[img]http://img.blog.csdn.net/20150207151039571
到此,我们已经为Project1和Project2成功的添加了一个CommonLib作为一个公共的子模块。
此时CommonLib中只有lib.java一个文件,现在要为这个公共模块进行功能扩充,添加一个libex.java,并将新添加的功能更新到远程服务器仓库中。
[img]http://img.blog.csdn.net/20150207151116983
如果我们需要在Project1和Project2中引用到CommonLib中添加的新功能,那么我们就要去到各个Project中lib目录下,将CommonLib中更新的代码同步回本地,
[img]http://img.blog.csdn.net/20150207151312345
这样我们就可以使用新的拓展功能进行开发了,使用起来非常的方便,也提高了我们解决问题的效率。
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2015-02-08 13:22:52  
研发管理 最新文章
拉格朗日乘数
maven之可视化项目依赖(Visualizingdepend
mac效率工具
Atitit.css规范bem项目中CSS的组织和管理
git入门
Asimplemodelfordescribingbasicsourcesofp
Linux进程管理浅析
我的openwrt学习笔记(十九):linux便捷开
2、微控制器选择
Git使用手册:为Git仓库创建Submodule
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2017年10日历
2017-10-19 7:43:45
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --