问题描述:

当一个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则无相关记录

  

  

  

最新文章

  1. python学习笔记整理——dictView [未整理]
  2. localhost和127.0.0.1 的区别
  3. Lucene建索引代码
  4. php弱类型
  5. RPC 原理的前生今世
  6. [SQL Server系] -- 视图
  7. hdu 4622 Reincarnation 字符串hash 模板题
  8. [Struts] Hello World Demo
  9. [转]PHP取整函数:ceil,floor,round,intval的区别详细解析
  10. 关于这两天研究Java打印pdf方法的记录
  11. CSS常用选择器
  12. STM32学习笔记之一(初窥STM32)
  13. Delphi的String内存结构(够清楚) good
  14. Jquery-获取勾选的checkbox的同级节点数量
  15. tcpip第三章
  16. 【转】sublime text 3 显示空格和Tab
  17. 字段的参数 -- Django从入门到精通系列教程
  18. text-shadow 详解及示例
  19. 可遇不可求的Question之MySql4.0前版本不支持union与批量SQL提交
  20. Qt+QGIS二次开发:向shp矢量图层中添加新的字段

热门文章

  1. python selenium模拟登陆163邮箱。
  2. ThinkPHP5使用jwt进行会话验证
  3. Linux命令 touch
  4. 代码质量管理-Sonar
  5. 从上一个页面跳入新页面时,如何拿URL中的参数
  6. Python matplotlib 交互模式
  7. mybatis之增删改
  8. linux/unix下setuid/seteuid/setreuid/setresuid
  9. hive HQL笔记
  10. spring security 学习三-rememberMe