【git】- 合并多个项目

合并多个项目为一个

场景

假设有三个项目a,b,c

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文件夹,需根据实际情况排除相关的文件夹不移动)
# 注意:报错的话执行下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

注意:执行 mv !(.|..|.git|a_new) a_new 时可能会报错误 -bash: !: event not,执行一下命令 shopt -s extglob
img

posted @   明小子@  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示