重命名Gerrit中的分支

时间:2019-02-01 05:53:55

标签: git gerrit

我在当前的分支名称“ foo”中对Gerrit进行了更改。 我想将分支名称更改为“ bar”,因此我使用了以下命令。

$ git branch -m bar

然后我进行了git修改,因为我也需要在Gerrit评论中看到分支名称的更改。

$ git commit --amend

但是在进行git审查时,出现以下错误。

$ git review bar
The branch 'bar' does not exist on the given remote 'gerrit'.
If these changes are intended to start a new branch, re-run with the
'-R' option enabled.

如何重命名Gerrit评论中的更改分支?

我不想删除并创建另一个分支。

3 个答案:

答案 0 :(得分:2)

由于bar尚不存在,因此需要首先创建它。要创建分支,必须授予该帐户对引用refs/heads/*上的Create Reference的访问权限。如果您的帐户没有访问权限,请向您的Gerrit管理员寻求帮助。

bar应该是根据更改的当前补丁集的父提交创建的。您可以在当前更改的页面上找到parent

创建bar后,您可以将补丁集樱桃粘贴到更改页面上的bar上。或在本地存储库中执行此操作:

# Checkout or reset to the patchset commit
git checkout <commit>

# Change the commit hash, as the original one has been pushed to refs/for/foo.
# Otherwise, it would fail to push the same commit to refs/for/bar.
git commit --amend --no-edit

# Push the new patchset to bar
git push origin HEAD:refs/for/bar

答案 1 :(得分:1)

重命名本地分支后,要重命名远程分支,您将必须:

  • 删除旧的远程分支,然后推送新的(重命名的)本地分支。

    git push origin :old new

  • 为新的(重命名的)本地分支重置上游分支。

    切换到分支并运行git push origin -u new

old指的是旧名称分支,而new指的是重命名的分支。

答案 2 :(得分:0)

如果您实际上打算推送更改以针对新的分支名称进行审核,则您的本地分支名称完全不相关。您推送到的目标分支是相关的。我不确定您将如何使用git review来做到这一点(因为它会隐藏/自动执行目标分支;例如HEAD:refs/for/foo)。


您可以做的是 将评论移至另一个分支 ssh command line, see --moveREST API / web interface)-自2.13开始可用的功能:

enter image description here


要手动推送,只需将其推送到新的refs/for/...远程分支:

git push origin HEAD:refs/for/bar

这假定您的项目设置允许在同一项目中具有相同的Change-Id。参见project setting: receive.createNewChangeForAllNotInTarget。如果您的Gerrit遥控器不接受更改,则可能需要重新创建Change-Id(删除,修改,提交,并且您的挂钩应注意设置新的更改)。然后,它将针对新的远程分支创建一个新更改。