Gerrit:有没有办法将顶级提交推送到同一个分支?

时间:2017-01-02 20:07:24

标签: git gerrit

在搜索了一盏灯并找到了不少类似的问题后,他们似乎都没有真正回答我的问题(在我发现的相关问题清单下面)。

我在尚未审核的提交之上开发了进一步的更改,但我希望将更改分开。在尝试推送新补丁进行审核时,我收到错误:

! [remote rejected] HEAD -> refs/for/master (no changes made)

情境: 在我的分支中,我有提交A(合并)< - 提交B(樱桃挑选/未合并) < - 提交C(我想推送的最近更改)。

如上所述,提交C依赖于B(但是我希望它们分开,不能进行压缩。同时删除B不是一个选项,因为它添加了尚未存在的更改是C)。

因此,当我尝试推送Commit C进行审核时,我收到上面的错误消息(我知道这是因为Commit B低于新的Commit C)。

我的问题是:在提交B合并之前,有没有办法将提交C发送到Gerrit?或者我真的必须等待B合并才能发送提交C?

作业:

Gerrit workflow - push single commit to topic branch

Git / gerrit, push remote rejected no changes made

Is there a way to force Gerrit to have all commits in a branch be push to code review?

git - pushing only the top most commit to server

2 个答案:

答案 0 :(得分:5)

是的,你可以根据unmerged commit-B推送commit-C,但你不能挑选它,因为这样你就可以得到基于commit-B'的commit-C(一个不同的提交,在比较时没有变化)与原始提交-B。

尝试此程序:

  1. 签出未合并的提交-B(从Gerrit复制此命令>更改>下载>结帐):

    git fetch https://USER@SERVER/a/REPO-PATH/REPO-NAME refs / changes / X / Y / Z&& git checkout FETCH_HEAD

  2. 从commit-B

    创建分支

    git checkout -b some-branch

  3. 将commit-C更改,提交并推送到Gerrit

  4. 我认为Gerrit将使用commit-C基于之前更改的commit-B创建更改。请注意,如果有人更改了原始提交-B,您需要在合并之前重新提交commit-C。

答案 1 :(得分:1)

另一种选择可能是在开发过程中简单地将两个提交合并(压缩)为一个(在B中单独的更改集中)并且一旦B合并,您可以在主服务器上重新绑定,这将只留下您的独特更改