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, 选中你要合并的远程分支就可以了
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/384810.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一次centos部署node高版本踩坑记录

前情回顾 大概在上周四的时候,我使用nuxt3把我上上周做的nuxt2项目重构了一遍,重构的时候感觉爽到飞起,vitevue3ts的感觉确实不错,再加上nuxt3的setup模板语法,写的得心应手 在项目写完之后我打算重新部署来替换之前…

学习笔记-系统框图传递函数公式推导

目录 *待了解 现代控制理论和自动控制理论区别 自动控制系统的组成 信号流图 1、系统框图 1.1、信号线、分支点、相加点 1.2、系统各环节间的连接 1.3、 相加点和分支点的等效移动(比较点、引出点) 2、反馈连接公式推导 2.1、前向通路传递函数…

android13 Settings动态显示隐藏某一项

总纲 android13 rom 开发总纲说明 目录 1.前言 2.确定目标设置项 3.修改参考 3.1 方法1 3.2 方法2 4.编译测试 5.彩蛋 1.前言 在Android 13系统中,动态显示或隐藏Settings应用中的某一项通常涉及到对Settings应用的内部逻辑进行修改。由于Settings应用是一个系统应用…

Vue3时间选择器datetimerange在数据库存开始时间和结束时间

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

【linux】Shell脚本三剑客之sed命令的详细用法攻略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

Docker+consul容器服务的更新与发现

1、Consul概述 (1)什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点…

mac清理软件哪个好用免费 MacBook电脑清理软件推荐 怎么清理mac

随着使用时间的增长,mac电脑会积累一些不必要的垃圾文件,这些文件会占用宝贵的存储空间,影响电脑的运行速度和稳定性。因此,定期清理mac电脑的垃圾文件是非常有必要的。市场上有许多优秀的Mac清理软件,包括一些出色的国…

打造一篇完美的【数学建模竞赛论文】:从准备到撰写的全面指南

目录 一、赛前准备 1.1 报名与纪律要求 1.2 MD5码上传 1.3 竞赛准备 1.4 时间分配 二、论文格式规范 2.1 摘要 2.2 参考文献 2.3 排版要求 三、建模过程与方法 3.1 问题分析与模型假设 3.2 模型构建与求解 3.3 结果分析与检验 四、论文撰写技巧 4.1 论文结构 4…

mybatis中的缓存(一级缓存、二级缓存)

文章目录 前言一、MyBatis 缓存概述二、一级缓存1_初识一级缓存2_一级缓存命中原则1_StatementId相同2_查询参数相同3_分页参数相同4_sql 语句5_环境 3_一级缓存的生命周期1_缓存的产生2_缓存的销毁3_网传的一些谣言 4_一级缓存核心源码5_总结 三、二级缓存1_开启二级缓存2_二级…

Java面试八股之BeanFactory和ApplicationContext有什么区别

BeanFactory和ApplicationContext有什么区别 在Spring框架中,BeanFactory和ApplicationContext都是用于管理和控制Bean的容器,但是它们之间存在一些关键的区别。下面是这些区别的总结: 功能和特性: BeanFactory是最基础的容器,…

ecshop网站部署

目录 步骤1 ecshop网站的部署 一、安装环境 二、设置开机启动 ​三、 测试php ​四、上传安装包 五、安装ecshop 步骤1 ecshop网站的部署 一、安装环境 yum install -y httpd mariadb-server php php-devel php-mysql 浏览器访问:192.168.30.2 二、设置开机启…

docker 安装单机版redis

把这三个放上去 修改成自己的 按照自己需求来 照图片做 vim redis.conf vim startRedis.sh mv startRedis.sh deployRedis.sh sh deployRedis.sh docker run --privilegedtrue \ --name dev.redis --restartalways \ --network dev-net \ -v ./config/redis.conf:/etc/r…

Golang高效合并(拼接)多个gzip压缩文件

有时我们可能会遇到需要把多个 gzip 文件合并成单个 gzip 文件的场景,最简单最容易的方式是把每个gzip文件都先解压,然后合并成一个文件后再次进行压缩,最终得到我们想要的结果,但这种先解压后压缩的方式显然效率不高,…

QSqlRelationalTableModel 增删改查

QSqlRelationalTableModel 可以作为关系数据表的模型类,适用于三范式设计的表,主表中自动加载外键表中的名称。本文实现QSqlRelationalTableModel 为模型类,实现增删改查。 目录 0.表准备 1. 构建表格数据 声明变量 表格、数据模型、选择…

WPF多语言国际化,中英文切换

通过切换资源文件的形式实现中英文一键切换 在项目中新建Language文件夹,添加资源字典(xaml文件),中文英文各一个。 在资源字典中写上想中英文切换的字符串,需要注意,必须指定key值,并且中英文…

26 Python序列结构

Python 中常用的序列结构有列表、元组、字典、字符串、集合等。 从是否有序这个角度看,Python 序列可以分为有序序列和无序序列;从是否可变来看,Python 序列可以分为可变序列和不可变序列两大类。 生成器对象和 range、map、enumerate、filte…

【计算机毕设论文】基于SpringBoot教材管理系统

💗博主介绍:✌全平台粉丝5W,高级大厂开发程序员😃,博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】关注并且私信我 感兴趣的可以先收藏起来,同学门有不懂的毕设选题,项目以及论文编写等相…

Harmony Next -- 通用标题栏:高度自定义,可设置沉浸式状态,正常状态下为:左侧返回、居中标题,左中右均可自定义视图。

hm_common_title_bar OpenHarmony三方库中心仓:https://ohpm.openharmony.cn/#/cn/detail/common_title_bar 介绍 一款通用标题栏,支持高度自定义,可设置沉浸式状态,正常状态下为:左侧返回、居中标题,左…

前端练习<HtmlCSS>——照片墙(附完整代码及实现效果)

这个小练习也来源于b站up小K师兄,大家可以通过下面的链接学习哦~up讲的非常详细。 纯CSS写一个简单酷炫的照片墙效果~ 先看一下这个照片墙的效果: 1.鼠标没有放到图片上时,照片同比例,每张照片都有倒影的效果。 2.然…

Spring 自定义集合实现策略

Spring 自定义集合实现策略 日常开发中,如果遇到复杂业务通常会用一个接口实现多个实现类。需要根据对应参数判断获取不同实现类。例如支付场景,根据选择支付方式,选择相应路由。如果实现类不多,通常会这样。如果实现类多了&…