一、背景
以前做过同仓库托管工具,不同repo的合并,如:OP项目代码更新公版;但未做过不同托管工具,不同仓库不同分支的合并
结论:经验证,验证通过!
二、原理:
- git不区分不同仓库是什么
- git通过remote引用和关联多个repo仓库
- 不同仓库代码合并,通过模拟本地分支拉取其他仓库代码;再将本地分支合并到想要的分支即可
三、操作步骤
3.1 场景一
假设:现在本地仓库A,需要合并仓库B
3.1.1 加仓库B的引用,并起别名
git remote add 仓库B别名 仓库B地址
如:
git remote add gitlabRepo git@gitlab.cloopm.com:yanqiancloud/yanqiancloud-front/yqcloud-front-h5customer.git
- 仓库B别名: 自定义
- 仓库B地址:需要操作的git仓库地址
3.1.2查看引用是否成功
git remote -v
3.1.3将仓库B代码下载到本地
git fetch 仓库B别名
如:
git fetch gitlabRepo
3.1.4 创建分支接受仓库B代码
git checkout -b 仓库A接受分支名 仓库B别名/仓库B分支名
如:
git checkout -b gitlab-code-branch gitlabRepo/testTwo
3.1.5 切回需要合并的分支
git checkout 仓库A分支
如:
git checkout dev
3.1.6 将【仓库A接受分支】合并到【仓库A某分支】
git merge 仓库A接受分支名
如:
git merge gitlab-code-branch
3.2 场景二
假设:仓库A又更新了需要再合并
- 方案一:重复以上流程,重新建一个分支接受
git checkout -b gitlab-code-branch-1 gitlabRepo/testTwo
- 方案二:直接在原分支更新,然后合并
git checkout gitlab-code-branch
git pull
git checkout dev
git merge gitlab-code-branch
注意:如果
仓库A>仓库B
,则合并不生效(其实也不是不生效,是认为你已经基于要合并的代码改动过了)