首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Gerrit分支合并到其他Gerrit分支

如何将Gerrit分支合并到其他Gerrit分支
EN

Stack Overflow用户
提问于 2012-10-11 21:07:54
回答 3查看 27.8K关注 0票数 39

我使用的是Gerrit版本2.4.2。我有一个分支master,并创建了一个名为newbranch的新分支。然后,我将一些更改推送到远程(Gerrit的) newbranch。在Gerrit中验证之后,我将更改合并到newbranch

否,我要将newbranch合并到master,发送更新master (与来自newbranch的更改合并),并删除newbranch分支。

我试过这样做:

代码语言:javascript
复制
git fetch
git checkout master
git merge newbranch
git push origin master:refs/for/master

但Gerrit给出了这样的信息:

代码语言:javascript
复制
 ! [remote rejected] master -> refs/for/master (no new changes)

我该怎么办?

EN

回答 3

Stack Overflow用户

发布于 2012-10-11 21:57:03

据报道,这种情况是Gerrit中的一个错误。以下是Gerrit's issue tracker提供的解决方案/解决方法

据我所知,你现在有两个选择-

  1. 强制推送到引用/标头。这只是一个快进,所以理论上一切都已经被审查和验证了。再次这样做是没有意义的,所以跳过这个过程,推送到refs/ ahead而不是refs/for。
  2. 继续创建合并提交。使用'git merge --no-ff‘--这将创建一个合并提交,即使它在快进情况下不是必需的。然后,可以像正常一样上传、查看、验证和合并合并提交。

我的公司倾向于使用选项2。我将关闭这篇文章,但如果你有任何关于如何做得更好的建议,请让我们知道。

票数 35
EN

Stack Overflow用户

发布于 2014-06-24 01:06:47

如果合并是快进合并,则不存在推送到gerrit的对象,因为快进只是移动分支指针。

您需要通过避免快进来强制合并来创建对象:

代码语言:javascript
复制
git merge --no-ff
票数 11
EN

Stack Overflow用户

发布于 2019-04-05 20:08:18

以下命令可以很好地工作。

代码语言:javascript
复制
git checkout master
git merge --no-ff newbranch

您可以使用默认提交消息进行保存。确保已生成更改id。您可以使用以下命令来确保。

代码语言:javascript
复制
git commit --amend

然后使用以下命令进行推送。

代码语言:javascript
复制
git push origin HEAD:refs/for/refs/heads/master

您可能会遇到如下错误消息。

代码语言:javascript
复制
! [remote rejected] HEAD -> refs/for/refs/heads/master (you are not allowed to upload merges)

要解决这个问题,gerrit项目管理员必须在gerrit中创建另一个引用,名为‘refs/for/refs/head/master’或‘refs/for/refs/head/*’(将来将覆盖所有分支)。然后授予此引用“Push Merge Commit”权限,如果需要提交GCR,则授予“Submit”权限。

现在,再次尝试上面的push命令,它应该可以工作。

演职人员:

https://github.com/ReviewAssistant/reviewassistant/wiki/Merging-branches-in-Gerrit

https://stackoverflow.com/a/21199818/3877642

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12840279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档