两个不同的仓库的分支合并

                          不同git仓库分支合并

过程记录

 

背景介绍:这两个分支都是基于主分支的某个commit点
比如我的qemu仓库里的kvm-dev-2.7分支 是基于 commit 1dc33ed90bf1fe1c2014dffa0d9e863c520d953a 属于刚创建的分支
信息如下
我的qemu-2.7.0仓库中的kvm-dev分支也是从主分支的 commit 1dc33ed90bf1fe1c2014dffa0d9e863c520d953a 拉出来的

[root@other qemu]$ git checkout -b kvm-dev-2.7 remotes/origin/kvm-dev-2.7
分支 kvm-dev-2.7 设置为跟踪来自 origin 的远程分支 kvm-dev-2.7。
切换到一个新分支 'kvm-dev-2.7'


[root@other qemu]$ git log
commit 1dc33ed90bf1fe1c2014dffa0d9e863c520d953a
Author: Peter Maydell <peter.maydell@linaro.org>
Date:   Fri Sep 2 13:44:11 2016 +0100

    Update version for v2.7.0 release
    
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

而qemu2.7.0仓库kvm-dev这个分支也是从commit    1dc33ed90bf1fe1c2014dffa0d9e863c520d953a 这个点慢慢发展而来

现在要将 qemu-2.7.0 仓库里的kvm-dev分支 合并到 qemu仓库里的分支remotes/origin/kvm-dev-2.7分支

以下是查到主线要以此commit点进行合并

Update version for v2.7.0 release v2.7.0
author    Peter Maydell <peter.maydell@linaro.org>    
Fri, 2 Sep 2016 20:44:11 +0800 (13:44 +0100)
committer    Peter Maydell <peter.maydell@linaro.org>    
Fri, 2 Sep 2016 20:44:11 +0800 (13:44 +0100)
commit    1dc33ed90bf1fe1c2014dffa0d9e863c520d953a        是我在新仓库以此为commit点(把另一个仓库从这个点开始合入)
tree    e8d23d84cbd2577d9f2b1fdabfbd49fa6e5e0e15    tree | snapshot
parent    12d2c4184c5ab60be3428b2bdea5ae66e8d5d960

 

两个不同仓库的分支合并参考链接 https://blog.csdn.net/gouboft/article/details/8450696

准备工作
qemu qemu2.7.0仓库分支合并
建立一个merge_git目录
mkdir -p ~/merge_git
cd ~/merge_git
分别下载qemu2.7.0 和 qemu仓库 到merge_git仓库
git clone qemu-2.7.0 (仓库地址)
git clone qemu(仓库地址)

[root@other merge_git]$ ls
qemu  qemu-2.7.0
[root@other qemu-2.7.0]$ git branch -a
* kvm-dev
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/kvm-dev
  remotes/origin/master

[root@other qemu]$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/kvm-dev-2.7
  remotes/origin/master

将 qemu-2.7.0 仓库里的kvm-dev分支 合并到 qemu仓库里的分支remotes/origin/kvm-dev-2.7
[root@other merge_git]cd qemu
第一步 qemu-2.7.0作为远程仓库,添加到qemu中,设置别名为other
[root@other qemu]$ git remote add other qemu-2.7.0仓库地址  

第二步 从qemu-2.7.0仓库中抓取数据到本仓库
[root@other qemu]$ git fetch other  
remote: Counting objects: 20237, done
remote: Finding sources: 100% (18364/18364)
remote: Total 18364 (delta 13868), reused 17910 (delta 13868)
接收对象中: 100% (18364/18364), 25.37 MiB | 5.39 MiB/s, 完成.
处理 delta 中: 100% (13868/13868), 完成 1057 个本地对象.
来自 ssh://gerrit.loongnix.org:29418/kernel/qemu-2.7.0
 * [新分支]          kvm-dev    -> other/kvm-dev
 * [新分支]          master     -> other/master

第三步 查看获取other 数据之后本地仓库的分支
[root@other qemu]$ git  branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/kvm-dev-2.7
  remotes/origin/master
  remotes/other/kvm-dev
  remotes/other/master
注意到 多了 remotes/other/kvm-dev remotes/other/master 这正是我们想要的结果

第四步:将qemu-2.7.0仓库抓去的kvm-dev分支作为新分支checkout到本地,新分支名设定为qemu-2.7.0(qemu-2.7.0仓库名字和新分支名字同名了)
[root@other qemu]$ git checkout -b qemu-2.7.0 other/kvm-dev
分支 qemu-2.7.0 设置为跟踪来自 other 的远程分支 kvm-dev。
切换到一个新分支 'qemu-2.7.0'

第五步:在本地创建基于分支remotes/origin/kvm-dev-2.7 的本地分支 lkvm-dev-2.7 且要并切到该分支
[root@other qemu]$ git checkout -b lkvm-dev-2.7 remotes/origin/kvm-dev-2.7
分支 kvm-dev-2.7 设置为跟踪来自 origin 的远程分支 kvm-dev-2.7。
切换到一个新分支 'kvm-dev-2.7'。

第六步 将qemu-2.7.0合并入kvm-dev-2.7分支 效果如下
[root@other qemu]$ git merge qemu-2.7.0
更新 1dc33ed..21c0fa2
Fast-forward
 Makefile                                |    4 +-
 compile.sh                              |    1 +
 configure                               |    8 +-
..
会显示一些修改提交信息

第七步:查看log,所有log都在,是我们想要的结果
[root@other qemu]$ git log
...能看到所有提交的信息都合并过来了

第八步:push 到远程remotes/origin/kvm-dev-2.7  完毕
git push origin lkvm-dev-2.7:kvm-dev-2.7


命令简写
[root@other qemu]$ git remote add other qemu-2.7.0仓库地址
[root@other qemu]$ git fetch other
[root@other qemu]$ git branch -a
[root@other qemu]$ git checkout -b lkvm-dev-2.7 other/kvm-dev-2.7
[root@other qemu]$ git checkout -b kvm-dev-2.7 remotes/origin/kvm-dev-2.7
[root@other qemu]$ git merge lkvm-dev-2.7
                 本地分支    远程分支
git push origin lkvm-dev-2.7:kvm-dev-2.7^C


在此过程中遇到一个问题
                                   本地分支名:    远程分支名
[root@other qemu]$ git push origin lkvm-dev-2.7:kvm-dev-2.7
对象计数中: 3, 完成.
Delta compression using up to 4 threads.
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (3/3), 609 bytes | 0 bytes/s, 完成.
Total 3 (delta 1), reused 3 (delta 1)
remote: Resolving deltas: 100% (1/1)
remote: Branch refs/heads/kvm-dev-2.7:
remote: You are not allowed to perform this operation.
remote: To push into this reference you need 'Push' rights.
remote: User: other
remote: Please read the documentation and contact an administrator
remote: if you feel the configuration is incorrect
remote: Processing changes: refs: 1, done    
To ssh://*******/qemu//git 地址
 ! [remote rejected] lkvm-dev-2.7 -> kvm-dev-2.7 (prohibited by Gerrit)
error: 无法推送一些引用到 To ssh://*******/qemu//git 地址
[root@other qemu]$ git push origin ls3a-sim:kvm-ls3a-sim-2.7


此时修改gerrit权限
解决办法:
在Gerrit里面进行配置,配置 'Forge Committer' 和 'Forge Author' 访问权限也是能够解决的

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值