为何要写
项目分类
工作所在的项目上做了前后端分离,主要分为3个项目:
- 通信前置(org-gateway)
接收其他系统发送过来的消息,并直接通过RPC调用后端服务内的service - web前端(org-web)
管理类,例如用户管理、权限分配等,有时候需要调用后端服务 - 后端服务(org-service)
用于处理所有请求
项目结构
此处的3个项目内文件仅仅用作演示,文件结构如下:
org
|- org-gateway
|- gateway.txt
|- 1.txt
|-org-service
|- service.txt
|- 2.txt
|- org-web
|- web.txt
|- 3.txt
改革在即
正所谓天下分久必合,合久必分;然大势所趋,天下必将一统(PS:领导要求合并成一个仓库方便管理)
现需要在org目录下建立一个org-base的文件夹,将所有三个项目都放入其中,并以文件夹区分开项目
操作步骤
0 重构原有项目目录
需要将项目根目录下所有文件移动到非根目录下,例如目前项目在./org-web,则需要将所有文件移到./org-web/org-web目录, 受git管理的文件使用 git mv
移动即可
重构后项目结构如下:
org
|- org-base
|- org-gateway
|- org-gateway
|- gateway.txt
|- 1.txt
|-org-service
|-org-service
|- service.txt
|- 2.txt
|- org-web
|- org-web
|- web.txt
|- 3.txt
1 添加远端仓库
命令格式
git remote add 远端别名 地址
首先在org-base创建git仓库,再将所有3个项目的git仓库添加到org-base的远程仓库中
2 从远端库获取
命令格式
git fetch 远端别名
此处org-base需要有个主分支,我在此处提交了一个base.txt文件后再做的获取
3 添加辅助分支
命令格式
git checkout -b 分支名 地址
4 切换回主分支
命令格式
git checkout master
5 合并辅助分支
命令格式(将指定的分支合并到当前分支),
git merge 分支名 --allow-unrelated-histories
注意: 如果直接合并会报无法合并无关的历史提交
加上--allow-unrelated-histories
参数后即可正确提交啦,提交的时候会弹出VIM用于编辑提交的注释,就不截图了
剩余的两个分支合并时,我加了-m
参数,免得在弹出来框框
最后再删除3个辅助分支以及3个远程仓库链接
总结
我们不难发现,其实他就只做了两步操作:
1.将其他git仓库作为远程库拉取到本地库中的一个分支(本文叫它辅助分支)
2.再将此分支合并入当前分支