問題描述
- 存在兩個由github管理的倉庫聪舒,但是現(xiàn)在需要一個總文件夾user-demo作為這兩個倉庫的父文件夾
- 執(zhí)行將兩個由git管理的倉庫直接移入了user-demo中憨颠,然后進(jìn)行g(shù)it init 并且push到遠(yuǎn)端倉庫员串。
- 然后重新從主文件夾的倉庫把項目clone下來發(fā)現(xiàn)恬汁,兩個子文件沒有內(nèi)容
ps:目錄結(jié)構(gòu)如下圖
解決思路
- Q1:根據(jù)當(dāng)前需求谤逼,可否使用git submodule舟铜?
- A1:查詢git submodule的使用條件
submodule允許你將一個 Git 倉庫作為另一個 Git 倉庫的子目錄戈盈。 它能讓你將另一個倉庫克隆到自己的項目中,同時還保持提交的獨立深滚。
剛好符合所需條件
- Q2:如何做到讓兩個repo作為submodule奕谭?
- A2:直接使用
git submodule add +倉庫地址
,那么現(xiàn)在在主倉庫下生成的這兩個倉庫就是submodule。***此時加入的兩個submodule是直接從remote拉下來的痴荐,因此使用git submodule add +倉庫地址
之前先把本地的提交交到remote血柳。此時你的父倉庫中拿到的就是直接從remote clone回來的子庫了。主子庫結(jié)構(gòu)建立成功
- Q3:構(gòu)建成功后生兆,發(fā)現(xiàn)再次從主庫中clone的項目會出現(xiàn)子文件雖然存在难捌,但是沒有內(nèi)容?
- A3:根據(jù)submodule介紹鸦难,此時clone下來要進(jìn)行
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
}
} //代碼內(nèi)容下一篇講解
- Q4:那么對于代碼更新有要求嘛击敌?
- A4:依舊按照子庫每次都要push,子庫push完主庫再push即可拴事。