问题描述:

当一个prj.git项目里引用了另外一个moduleA.git项目作为其一个子模块,由于该模块未完善后续可能将继续升级,也就是需要两套git分别管理prj.git与moduleA.git,而prj.git又使用了moduleA.git。

使用submodule进行管理

  1.  新建一个项目git

  

  2. 新建一个mouleA.git

  

  3. 在prj.git里添加moudleA.git。

  

  

带有submodule仓库的克隆方法

  1. 直接clone的话是没有submodule信息的,只有文件夹。

  

  这是因为,父项目的git并不会记录submodule的文件变动,它是按照commit id指定submodule的git header。

  不过可以先对submodule初始化,然后更新,就可以clone到原module的内容。

  

  2. 第二种方式使用递归clone,添加参数 --recursive。

  

在远程修改submodule及本地更新submodule

  1. 远程更新submodule

  

  2. 本地更新submodule

  2.1 直接pull或者更新submodule是无效的,因为远程prj.git并未记录submodule有任何的改动,即远程prj.git不知道也根本不管submodule有没有更新,除非你在prj.git有commit记录。

  

  2.2 在这种情况下仍要更新submodule,就需要直接进入submodule仓库下并切换为需要的分支进行更新。

  

  2.3 这时prj.git 理所当然地发生了变化,根据需要提交变更记录即可。

  

在本地修改submodule并push后,他处submodule更新流程

  1. 本地A修改submodule并Push

    1.1. 现在本地submodule添加一个新功能:c.md,然后push。

   

    1.2 接着,提交本次prj.git的变更记录:

   

  2. 他处B更新submodule

    2.1 pull后发现submodule发生了改动:

    

    2.2 使用update对submodule进行更新

    

删除submodule

  1.  git rm moduleA,即可

  

  这样做git的config文件中仍有相关记录,但是不影响使用,如果新clone的话,就不会有相关的记录了。

  如果介意可以手动将该文件的相关行删除。

  

  2. 新clone后,config则无相关记录

  

  

  

git: 使用submodule进行托管的更多相关文章

  1. 使用百度网盘+Git,把版本控制托管到云端

    之前公司的一个项目使用SVN来做的版本控制,服务器设在我这台电脑上.然后是出于某些原因,我的电脑IP变了多次,每变一次就要重新绑定静态ip,甚是烦人.同时SVN这种集中式的版本控制服务在我关闭了我的电 ...

  2. git get submodule after clone

    /********************************************************************************* * git get submodu ...

  3. git中submodule子模块的添加、使用和删除

    git中submodule子模块的添加.使用和删除   原文链接:https://blog.csdn.net/guotianqing/article/details/82391665背景项目中经常使用 ...

  4. Git 子模块 - submodule

    有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...

  5. 使用百度云同步盘和Git Extensions进行代码托管

    一.软件安装 百度云同步盘和Git Extensions的安装和配置略过. 二.建立Git代码库,以[GHO2VMDK转换工具]项目为例 1. 建立本地代码库 进入[GHO2VMDK转换工具]项目文件 ...

  6. Git 子模块 - submodule(转)

    原文地址: http://www.cnblogs.com/kelsen/p/5918672.html 有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开 ...

  7. git子模块submodule

    添加submodule: git submodule add 子模块git地址  把这个module放置的文件夹(这个文件夹须事先不存在) git submodule add http://xxx.x ...

  8. GIT 使用 osc 在线托管

    今天一看,osc的代码托管自己开了2年了,csdn的代码托管也开了3年了,只是项目里有几个了了就是fork来的,自己的也没认真写,之前工作也用git,现在改用自己的git了. 所以就把Key-gen ...

  9. 使用U盘或在本地电脑作为git远程仓库进行托管

    情景描述: 当有两台电脑需要共同维护一段代码,其中一台电脑不希望(或者不能)通过网络的方式进行访问git仓库(即不使用github),那么可以使用U盘作为介质将其作为远程仓库,或者使用局域网中一台电脑 ...

随机推荐

  1. Execute Unix Command via Putty_QTP

    plink_path = "C:/plink.exe"     'plink.exe 路径 username = "username"       '用户名 p ...

  2. Queue与Deque的区别

    前言 ​ 在研究java集合源码的时候,发现了一个很少用但是很有趣的点:Queue以及Deque,平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用,但是一直都不知 ...

  3. tar 和gzip 的区别

    首先要 弄清两个概念:打包和压缩. 打包是指将一大堆文件或目录什么的变成一个总的文件, 压缩则是将一个大的文件通过一些压缩算法变成一个小文件. 为什么要区分这两个概念呢?其实这源于Linux中的很多压 ...

  4. Caused by: java.util.MissingResourceException: Can't find bundle for base name javax.servlet.LocalStrings, locale zh_CN

    这个是很早以前的一个bug了,最近开始用idea发现追源码相当方便,于是结合网上的解决方案以及自己的判断追踪一下原因,当然没有深究,只是根据提示一直追而已:先说一下解决方案: <dependen ...

  5. KiCAD绘制电源符号

    KiCAD绘制电源符号 KiCAD自带的电源符号有时候不符合我们的操作习惯,需要自己重新定义电源符号,这时候就需要新建(不能更改系统自带库的电源符号) 1.新建符号,参照下图行设置 2.放置引脚和图形 ...

  6. KiCAD层颜色修改

    KiCAD层颜色修改 KiCAD的PCB各层的颜色太过于暗淡,有时可能不适合操作者的习惯,尤其是铜层(布线层),这时候就需要去修改层的颜色,具体操作如下图:选择想要修改的层,双击左边颜色框框,进入之后 ...

  7. 取消SVN感叹号即去除版本库

    之前不小心直接将版本库 的内容检出 到桌面,后才发现桌面上的文件 都变成了问号,本来也以为没有多大问题,删除 .svn 即可,可是删除所有的.svn后,桌面上还是显示问号,刷新了很多次,还重启电脑 了 ...

  8. model字段对象和forms字段对象的区别和联系

    一.model字段对象 (一)_meta _meta是django.db.models.options.Options的实例,获取字段对象可通过模型类来进行获取,而_meta可提供如下功能: 获取模型 ...

  9. spring 转换器和格式化

    Spring总是试图用默认的语言区域将日期输入绑定 到java.util.Date.假如想让Spring使用不同的日期样 式,就需要用一个Converter(转换器)或者 Formatter(格式化) ...

  10. cboard进行访问,汉化