目錄
一、場景
二、合并步驟
1.本地新建 all 目錄,并初始化
?2.在 all 中添加 a,b,c 的遠程分支
3.驗證是否添加成功
4.在 all 目錄下,獲取 a, b,c 的 master 分支數據
5.合并項目并移動到子目錄中
?6.推送 all 的 master 分支到遠程
一、場景
假設有三個項目a,b,c,分別有獨立的git地址,現在遷移代碼后要合并到同一個新的git地址
a:遠程地址為:https://xxx.xx/a.git ,分支為master
b:遠程地址為:https://xxx.xx/b.git ,分支為master
c:遠程地址為:https://xxx.xx/c.git ,分支為master
合并后的倉庫地址為https://xxx.xx/all.git, 目錄結構為
all?
? - a_new ? # 對應原項目a
? - b_new ? # 對應原項目b
? - c_new ? # 對應原項目c
二、合并步驟
1.本地新建 all 目錄,并初始化
mkdir all
cd all
git init
?2.在 all 中添加 a,b,c 的遠程分支
git remote add origin_a https://xxx.xx/a.git
git remote add origin_b https://xxx.xx/b.git
git remote add origin_c https://xxx.xx/c.git
3.驗證是否添加成功
git remote -v
4.在 all 目錄下,獲取 a, b,c 的 master 分支數據
如果是其他分支修改master即可
git fetch origin_a master
git fetch origin_b master
git fetch origin_c master
5.合并項目并移動到子目錄中
# 合并a項目
git merge origin_a/master --allow-unrelated-histories ?# 合并,并保留歷史。--allow-unrelated-histories:允許合并不相關歷史
mkdir a_new ? # 新建子文件夾
# 移動到此文件中(mv!排除需要忽略的文件夾,此處排除了.git, a_new文件夾,需根據實際情況排除相關的文件夾不移動)
# 注意:報錯的話(git bash: !: event not found)執行下shopt -s extglob
mv !(.|..|.git|a_new) a_new
git add . && git commit -m "merge a_master and mv to a_new" ?# 生成一條commit日志
# 合并b項目
git merge origin_b/master --allow-unrelated-histories
mkdir b_new
mv !(.|..|.git|a_new|b_new) b_new
git add . && git commit -m "merge b_master and mv to b_new"
# 合并c項目
git merge origin_c/master --allow-unrelated-histories
mkdir c_new
mv !(.|..|.git|a_new|b_new|c_new) c_new
git add . && git commit -m "merge c_master and mv to c_new"
?6.推送 all 的 master 分支到遠程
git remote add origin https://xxx.xx/all.git
git push -u origin master