多个git仓库 合并

原创
2018/07/20 19:00
阅读数 1W

为何要写


项目分类

工作所在的项目上做了前后端分离,主要分为3个项目:

  1. 通信前置(org-gateway)
    接收其他系统发送过来的消息,并直接通过RPC调用后端服务内的service
  2. web前端(org-web)
    管理类,例如用户管理、权限分配等,有时候需要调用后端服务
  3. 后端服务(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的远程仓库中
remote add

2 从远端库获取

命令格式

git fetch 远端别名

此处org-base需要有个主分支,我在此处提交了一个base.txt文件后再做的获取
fetch

3 添加辅助分支

命令格式

git checkout -b 分支名 地址

add branch

4 切换回主分支

命令格式

git checkout master

checkout

5 合并辅助分支

命令格式(将指定的分支合并到当前分支),

git merge 分支名 --allow-unrelated-histories

注意: 如果直接合并会报无法合并无关的历史提交

加上--allow-unrelated-histories参数后即可正确提交啦,提交的时候会弹出VIM用于编辑提交的注释,就不截图了

剩余的两个分支合并时,我加了-m参数,免得在弹出来框框

最后再删除3个辅助分支以及3个远程仓库链接

总结


我们不难发现,其实他就只做了两步操作:
1.将其他git仓库作为远程库拉取到本地库中的一个分支(本文叫它辅助分支)
2.再将此分支合并入当前分支

展开阅读全文
Git
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部