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

相关推荐

  1. git mergegit rebase

    2024-07-20 14:12:01       40 阅读
  2. git merge git rebase

    2024-07-20 14:12:01       40 阅读
  3. git rebase git merge区别

    2024-07-20 14:12:01       16 阅读
  4. git merge git pull的区别是什么

    2024-07-20 14:12:01       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 14:12:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 14:12:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 14:12:01       45 阅读
  4. Python语言-面向对象

    2024-07-20 14:12:01       55 阅读

热门阅读

  1. tmp - configmap动态更新配置?

    2024-07-20 14:12:01       19 阅读
  2. ENSP常见命令及协议命令

    2024-07-20 14:12:01       19 阅读
  3. LeetCode 221. 最大正方形

    2024-07-20 14:12:01       18 阅读
  4. Vue中Key的作用

    2024-07-20 14:12:01       14 阅读
  5. VMware 虚拟机 ping 不通原因排查

    2024-07-20 14:12:01       21 阅读
  6. 数据响应式(Object.defineProperty和Proxy)

    2024-07-20 14:12:01       14 阅读
  7. 云计算的三种服务模式

    2024-07-20 14:12:01       18 阅读
  8. wps的xls文件,如何过滤掉空白没有数据的行

    2024-07-20 14:12:01       16 阅读
  9. Provider(5) - AdjustChannelsBufferProvider

    2024-07-20 14:12:01       17 阅读
  10. lua 游戏架构 之 SceneLoad场景加载(一)

    2024-07-20 14:12:01       19 阅读