网站首页 > 基础教程 正文
1、背景
在实际场景中,我们会将服务进行拆分, 也可能需要重构,将多个服务模块进行合并,简化维护。 如何将多个GIT项目统一合并迁移至一个项目, 并且又可以保留各个版本的历史记录? 下面讲解具体操作步骤。
2、迁移说明
将原来的三个GIT工程: monitor-datasource、monitor-system和monitor-performance,合并至新工程monitor。同时,需要将原来的多个分支monitor_main和monitor_uat合并迁移,并保留原有的历史commit记录。
3、操作步骤
1、建好合并的新工程
创建好monitor.git工程, 并克隆至本地:
cd test
git clone http://gitlab.local/operation.git
2、预先创建好需要迁移的各版本
先把要迁移的各版本建立好, 最好从空分支建立,不要留有任何文件;在本地创建好分支即可, 先不用提交至仓库:
git branch monitor_main
git branch monitor_uat
3、添加要合并的GIT工程信息
把要合并的GIT工程模块, 加入进来:
# 进入新工程目录
cd operation
# 添加分支工程地址
git remote add monitor-datasource http://gitlab.local/operation/monitor-datasource.git
git remote add monitor-system http://gitlab.local/operation/monitor-system.git
git remote add monitor-performance http://gitlab.local/operation/monitor-performance.git
4、拉取各分支版本信息
拉取要合并的GIT工程模块的对应分支版本信息:
git fetch monitor-datasource monitor_main
git fetch monitor-system monitor_main
git fetch monitor-performance monitor_main
git fetch monitor-datasource monitor_uat
git fetch monitor-system monitor_uat
git fetch monitor-performance monitor_uat
如果分支版本太多, 可以直接拉取所有
git fetch --all
5、对分支代码进行合并
先合并monitor_main版本代码。
对 monitor-datasource、monitor-system和monitor-performance三个模块依次进行合并操作:
1)合并monitor-datasource工程模块
#合并monitor-datasource工程
git merge -m "merge module" monitor-datasource/monitor_main --allow-unrelated-histories
#创建monitor-datasource目录
mkdir monitor-datasource
#将合并的代码移动至刚创建的monitor-datasource目录
ls -A | grep -wv '.git\|monitor-datasource\|monitor-system\|monitor-performance' | xargs -t -I '{}' git mv {} monitor-datasource/{}
# 进行代码的添加与提交
git add. && git commit -m "merge init"
2)合并monitor-system工程模块
#合并monitor-system
git merge -m "merge module" monitor-system/monitor_main --allow-unrelated-histories
#创建monitor-system目录
mkdir monitor-datasource
#将合并的代码移动至刚创建的monitor-system目录
ls -A | grep -wv '.git\|monitor-datasource\|monitor-system\|monitor-performance' | xargs -t -I '{}' git mv {} monitor-system/{}
# 进行代码的添加与提交
git add. && git commit -m "merge init"
3)合并monitor-performance工程模块
#合并monitor-performance
git merge -m "merge module" monitor-performance/monitor_main --allow-unrelated-histories
#创建monitor-performance目录
mkdir monitor-performance
#将合并的代码移动至刚创建的monitor-performance目录(注意这里要排除已经创建的目录)
ls -A | grep -wv '.git\|monitor-datasource\|monitor-system\|monitor-performance' | xargs -t -I '{}' git mv {} monitor-performance/{}
# 进行代码的添加与提交
git add. && git commit -m "merge init"
注意, 合并完后先不用push提交, 待所有版本都合并完再提交。
6、对其他版本的分支代码进行合并
上面我们预先创建好了不同的版本分支, 这里直接切换至不同的分支
git checkout monitor_uat
再参照第5个步骤,依次对各模块进行合并处理
git merge ...
7、最后, 将提交的信息推送至远程仓库
将创建合并好的各分支版本, 推送至远程仓库:
git push origin monitor_main
git push origin monitor_uat
至此, 就完成了多GIT项目多版本的迁移, 并且可以完整的保留commit历史提交记录。
附:清理remote远程仓库信息:
git remote remove monitor-datasource
git remote remove monitor-system
git remote remove monitor-performance
删除本地的分支:
git branch -D monitor_uat
- 上一篇: 一篇搞懂Git 和 SVN 的区别
- 下一篇: 10分钟掌握Git常用命令,做一名有知识的程序员
猜你喜欢
- 2024-12-03 在游戏中学习git操作(三)
- 2024-12-03 图文并茂,详细讲解Git底层存储原理
- 2024-12-03 10分钟掌握Git常用命令,做一名有知识的程序员
- 2024-12-03 一篇搞懂Git 和 SVN 的区别
- 最近发表
-
- 在使用Bootstrap吗?快来看看如何使用 Bootswatch 主题吧
- 50个HTML5免费的Bootstrap模板 :下
- 定制你的bootstrap之--修改less文件1
- BootstrapBlazor :使用 .NET 生成交互式客户端 Web UI 的框架
- React与使用Bootstrap5模态框的注意事项
- 如何引用bootstrap没有的字体图标
- 10个超酷炫Bootstrap HTML & CSS UI工具包
- Bootstrap自举电路工作原理讲解(自举电路的原理)
- 为何 BootstrapVue 能成为 Vue 前端框架顶流?
- 新增 创意布局企业网络服务CSS模板 bootstrap 模板
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)