当前位置: 首页 > news >正文

Git仓库拆分和Merge

1. 问题背景

我们原先有一个项目叫open-api,后来想要做租户独立发展,每个租户独立成一个项目,比如租户akc独立部署一个akc-open-api,租户yhd独立部署一个yhd-open-api,其中大部分代码是相同的,少量租户定制代码。所以现在想做到的是:

  1. 从open-api创建新的工程,如akc-open-api
  2. 跨工程代码合并,公共的代码修改在open-api完成,合并进akc-open-api、yhd-open-api

2. 创建项目

这一节的目的是从open-api复制一个新项目称为akc-open-api,操作步骤如下

  1. 克隆一个open-api项目
  2. 切换到想要的分支
  3. 移除老的git仓库
  4. 添加新的git仓库
  5. 推送到新git仓库
1. 克隆一个open-api项目
 git clone git@git.abc.com:partner/open-api-web.git
2. 切换到想要的分支

checkout远程的origin/dev_tenant,创建为本地分支dev_tenant

git checkout -b dev_tenant origin/dev_tenant
3. 移除老的git仓库

先查看现在关联的git仓库

git remote -v

移除现有仓库

git remote remove origin

通过git remote -v查看,现在已经没有关联的远程仓库了。

4. 添加新的git仓库
git remote add origin git@git.abc.com:tenant/akc-open-api-web.git
5. 推送到新git仓库
git push -u origin --all
git push -u origin --tags

2. 跨项目代码merge

上面我们从open-api项目复制了一个新的akc-open-api项目,公共的代码修我们不想重复劳动,通过修改open-api,再通过跨项目合并到不同的租户下。操作步骤如下:

1. 进入子工程目录,akc-open-api
randa@Randy MINGW64 /d/KeyniuWorkspace
$ cd akc-open-api-app/
2. 将父工程仓库关联到子工程,open-api

查看现在关联的仓库

$ git remote -v
origin  git@git.abc.com:tenant/akc-open-api-app.git (fetch)
origin  git@git.abc.com:tenant/akc-open-api-app.git (push)

关联open-api的仓库

$ git remote add parentProject git@git.abc.com:be/open-api-app.git

再次查看,确认关联成功

$ git remote -v
origin  git@git.abc.com:tenant/akc-open-api-app.git (fetch)
origin  git@git.abc.com:tenant/akc-open-api-app.git (push)
parentProject   git@git.abc.com:be/open-api-app.git (fetch)
parentProject   git@git.abc.com:be/open-api-app.git (push)
3. 更新父工程的代码

关联的时候我们把仓库名取名为parentProject, 这时候要用这个仓库名更新分支

$ git fetch parentProject
...
From git.abc.com:be/open-api-app* [new branch]      dev_tenant   -> parentProject/dev_tenant
4. 合并分支

现在就可以和普通的分支合并一样处理了,在idea里选git -> merge, 选中你要合并的远程分支就可以了
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机网络基础:4.HTTP与HTTPS
  • 打造智慧图书馆:AI视频技术助力图书馆安全与秩序管理
  • 02集成开发工具配置VScode SSH连接Ubuntu20.04 - 输入密码连接
  • 【LeetCode:2766. 重新放置石块 + 哈希表】
  • 构建智慧水利系统,优化水资源管理:结合物联网、云计算等先进技术,打造全方位、高效的水利管理系统,实现水资源的最大化利用
  • Word 导入导出
  • 算法类学习笔记 ———— 红绿灯检测
  • vue3页面编写-导入导出excel、展开查询项等
  • 【Android】安卓四大组件之广播知识总结
  • 云计算实训12——配置web服务器、配置客户端服务器、配置DNS服务、实现DNS域名解析
  • 深入理解算数表达式求值:后缀表达式的转换与计算
  • Python爬虫实战案例(爬取图片)
  • 【MySQL进阶之路 | 高级篇】redo日志和undo日志
  • 以太坊的可扩展性危机:探索执行层的瓶颈
  • DNS续集
  • DOM的那些事
  • Invalidate和postInvalidate的区别
  • python 装饰器(一)
  • Python学习之路13-记分
  • underscore源码剖析之整体架构
  • ViewService——一种保证客户端与服务端同步的方法
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 阿里云Kubernetes容器服务上体验Knative
  • 回顾 Swift 多平台移植进度 #2
  • 判断客户端类型,Android,iOS,PC
  • 什么软件可以剪辑音乐?
  • 数组的操作
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • const的用法,特别是用在函数前面与后面的区别
  • Mac 上flink的安装与启动
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​水经微图Web1.5.0版即将上线
  • #vue3 实现前端下载excel文件模板功能
  • (2020)Java后端开发----(面试题和笔试题)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (solr系列:一)使用tomcat部署solr服务
  • (笔试题)合法字符串
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (回溯) LeetCode 131. 分割回文串
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (转)C#调用WebService 基础
  • ******之网络***——物理***
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .form文件_SSM框架文件上传篇
  • .mysql secret在哪_MySQL如何使用索引
  • .NET C# 操作Neo4j图数据库
  • .NET C# 使用 iText 生成PDF
  • .NET Core 2.1路线图
  • .Net IOC框架入门之一 Unity
  • .NET NPOI导出Excel详解
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?