20170728

问题描述

  • 存在两个由github管理的仓库,但是现在需要一个总文件夹user-demo作为这两个仓库的父文件夹
  • 执行将两个由git管理的仓库直接移入了user-demo中,然后进行git init 并且push到远端仓库。
  • 然后重新从主文件夹的仓库把项目clone下来发现,两个子文件没有内容
    ps:目录结构如下图

解决思路

  • Q1:根据当前需求,可否使用git submodule?
  • A1:查询git submodule的使用条件

submodule允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。

刚好符合所需条件


  • Q2:如何做到让两个repo作为submodule?
  • A2:直接使用git submodule add +仓库地址,那么现在在主仓库下生成的这两个仓库就是submodule。***此时加入的两个submodule是直接从remote拉下来的,因此使用git submodule add +仓库地址之前先把本地的提交交到remote。此时你的父仓库中拿到的就是直接从remote clone回来的子库了。主子库结构建立成功

  • Q3:构建成功后,发现再次从主库中clone的项目会出现子文件虽然存在,但是没有内容?
  • A3:根据submodule介绍,此时clone下来要进行git submodule init追踪submodule仓库,然后使用git submodule update将每个submodule的commit指向离主库commit最近的那一次。
    ----->所以对于jenkins把代码clone下来之后,必须在jenkinsfile的build stage中添加
stage('build'){
   steps{
    checkout  scm
    git submodule init
    git submodule update
  }
}  //代码内容下一篇讲解

  • Q4:那么对于代码更新有要求嘛?
  • A4:依旧按照子库每次都要push,子库push完主库再push即可。

推荐阅读更多精彩内容

  • 本片内容转自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃儿阅读 4,265评论 2 88
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 11,009评论 9 162
  • 分布式版本管理工具 git属于分布式 svn集中式 git安装 git初始化一个仓库 其实就是创建了一个.git隐...
    SnowDragonYY阅读 1,245评论 0 0
  • 《人在江湖》系列——研发经理技能,hc预算两步定 2017还有几天就来了,hc预算是q4必做之事。做hc,总结了下...
    程序媛大丽阅读 1,279评论 0 1
  • 荒野里有一架钢琴 我的目光还来不及温柔起来 便开始担心它能否代替古斯里 唤回高加索上的游魂 荒野里有一架钢琴 黑键...
    一张机阅读 49评论 2 3