Git使用手册:为Git仓库创建Submodule

在实际开发中,经常会遇到下图所示的场景,多个不同的项目工程(工程1,工程2,工程3)中有一个相同的功能模块代码(LibA),这些功能模块可能在以后也会被其他项目工程所引用,按照下图所示,哪个工程需要这个LibA就直接将LibA的源代码引入到当下所需要的项目工程中,这样,我们就可以使用LibA所提供的功能进行开发,如果采用这种方式进行开发,将会面临一个问题,LibA中的功能进行了扩充,那么所有引用libA的工程项目就得重新删除旧的LibA然后再将新的LibA的代码引入到工程中,这种流程操作起来非常的不方便,假如我有100个工程引用了LibA,那我就得为100个工程更新LibA,这种开发效率大家可想而知。

如果我们将上面这个公共库LibA提取出来,让我们所有需要引用libA功能的工程都依赖于同一份的LibA代码,这样的话,如果其中一个工程中更新了LibA的功能,那么其他工程中由于引用的是同一个LibA,它们也将直接获得新增加进libA的功能,而省去的不断发杂的更新其他项目中的LibA中的流程,这种方式不仅有利于libA功能上的扩展,还有利于当LibA中的代码出现BUG的时候,只要进行一次修复,就可以解决其他依赖的项目工程的问题,这种处理的方式可以大大的提高我们实际开发中的效率。

版本管理控制工具Git提供的Submodule(子模块)功能就可以满足我们的这种功能需求,可以解决上诉提出的100个工程就要更新100次LibA代码的问题,大大提高我们在实际开发中效率,接下来我们来看一下,Git是如何使用Submodule来解决我们的问题的。

首先准备好了三个远程的Git仓库(Project1,Project2,CommonLib)分别用于模拟两个开发工程,和一个公共模块,如果不明白如何创建创建远程仓库,可以参看我的另外一篇文章Git仓库创建

再分别为Project1和Project2引入CommonLib作为这两个工程的Submodule(由于接下来的流程Project1和2基本相同,所以只给出Project1的操作流程)

git submodule add 远程仓库地址 添加的目录名

使用Git status命令查看一下当前Project1下,你会看到新增了两个文件,一个是submodule,一个是lib文件夹。

其中,gitmodules文件存放了Project1依赖的submodule的相关信息,而lib文件夹则是用于存放我们引入的CommonLib模块,查看一下gitmodules文件可以发现文件中的信息是指向Project1所依赖的CommonLib的远程Git仓库的地址,如果Project1依赖了多个不同的submodule,则gitmodules文件中存多个不同的path和url一一对应,其他人clone了Project1工程后也要通过.gitmodules来找到CommonLib,将远程的仓库代码克隆到本地进行使用。

接下来将刚刚Project1添加进去submodule同步到远程仓库中,分别执行以下的操作

git add .
git commit -am "相关描述"
git push origin master

到此,我们已经为Project1和Project2成功的添加了一个CommonLib作为一个公共的子模块。

此时CommonLib中只有lib.java一个文件,现在要为这个公共模块进行功能扩充,添加一个libex.java,并将新添加的功能更新到远程服务器仓库中。

如果我们需要在Project1和Project2中引用到CommonLib中添加的新功能,那么我们就要去到各个Project中lib目录下,将CommonLib中更新的代码同步回本地,

这样我们就可以使用新的拓展功能进行开发了,使用起来非常的方便,也提高了我们解决问题的效率。

时间: 2024-07-31 20:08:15

Git使用手册:为Git仓库创建Submodule的相关文章

Git使用手册/Git教程:git fetch 将远程仓库的分支及分支最新版本代码拉取到本地

相关文章: 关于验证是否存在ssh配置以及生成SSH Key的方法可以参照文章:Git使用手册:生成SSH Key 关于SSH Key的使用和公钥在gitHub.gitLab的配置等,请参考文章:Git使用手册:使用SSH Key及配置SSH key公钥 关于GIT 工作区.暂存区.本地仓库.远程仓库的概念及关系,请参考文章:Git使用手册:工作区.暂存区.本地仓库.远程仓库 关于GIT 从远程仓库下载项目到本地工作区的操作,请参考文章:Git使用手册:git clone 克隆下载远程仓库项目工

Ubuntu下安装Git以及Git帮助手册【转】

转自:http://milkythinking.com/blog/2011/04/17/install_git_and_manual/ Git简介 Git是一个分布式版本控制系统,对应的是SVN.CVS这样的集中式版本控制系统. 虽然知晓并安装Git是很久以前的事情了,但是我却没怎么用过,一直使用的是SVN.在<Pro Git>中看到的Git的好处有: 本地完整地镜像了代码仓库的所有内容,如果服务器出现故障,可以使用任何一个本地镜像进行恢复.而使用SVN,如果没有对服务器端的数据进行安全悲愤,

Git学习笔记(一) --- --- git的安装及本地仓库的创建,github上仓库的连接方式

首先了解git的作用是什么,本地仓库,中央仓库都是干什么的? Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上.实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个"服务器"仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交. 一. git的下载与安装: 1. 下载地址:https://www.git-scm.com/download/win 2. 安装,注意改一下安装路径并且牢记你装在

Git仓库创建

1. 创建git资源库 git init --bare 库名称 记住在你创建的时候,首先进入你想创建的目录,执行这个命令 Initialized empty Git repository in e:/android_software/userworkspace/de git/sqf/ 2. 在用户文件夹下把资源clone下来 git clone <仓库目录> /g/software/repository/git/itheima <用户目录> . 注意:clone时候用户目录必须为空

git之create local reposition(创建本地仓库)

1.创建名为git-reposition的仓库 mkdir home/sunjf/git-reposition 注:home/sunjf可以指定为你想要的路径下面 2.初始化仓库 cd ~/git-reposition    //进入仓库目录 git init   //初始化仓库 此时,在仓库中会产生.git文件,因为为隐藏文件,需要通过ls -ah查看 3.在仓库中建readme.txt文件,并添加内容 touch readme.txt   //创建readme.txt文本 sudo vim

Git仓库创建和文件提交

参考质料:廖雪峰的个人网站 Git 什么是Git:一个分布式版本管理系统: 作用:管理你的历史文件,文件修改历史,团队协作. Windows下安装Git: 到链接下载安装包,国内镜像 云盘 安装完成后打开GitBash 输入: git config --global user.name "enter you name" Git config --global user.email "enter you email" 注意git config命令的--global参数

git之remote repository create(远程仓库创建)

1.在Git bash窗口执行如下指令创建SSH KEY: ssh-keygen -t rsa -C "[email protected]" 此时会在用户主目录下生成.ssh文件: 打开.ssh文件,会发现里面生成了id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人. 2.登录github 进入setting 添加SSH KEY

Git 进阶指南(git ssh keys / reset / rebase / alias / submodule )

在掌握了基础的 Git 使用 之后,可能会遇到一些常见的问题.以下是猫哥筛选总结的部分常见问题,分享给各位朋友,掌握了这些问题的中的要点之后,git 进阶也就完成了,它包含以下部分: 如何修改 origin 仓库信息 如何配置 git ssh keys 如何撤销修改 遇到冲突了怎么解决 git stash / alias / submodule 的使用问题等 问:如何修改 origin 仓库信息? 1.添加 origin 仓库信息 git remote add origin <git仓库地址>

Git操作手册|命令速查表

这篇文章主要介绍Git分布式版本管理与集中式管理的一些差异,总结下Git常用命令作为日后的速查表,最后介绍Git进阶的一些案例.本文分为以下几个部分: Git与SVN差异 Git常用命令 Git进阶指南 Git与SVN差异 Git的第一个版本是Linux之父Linus Torvalds亲手操刀设计和实现的,Git 基于 DAG 结构 (Directed Acyclic Graph),其运行起来相当的快,它已经是现在的主流. Git 和 SVN 思想最大的差别有四个: 去中心化 直接记录快照,而非