问题描述
- 存在两个由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即可。