在搜索了一盏灯并找到了不少类似的问题后,他们似乎都没有真正回答我的问题(在我发现的相关问题清单下面)。
我在尚未审核的提交之上开发了进一步的更改,但我希望将更改分开。在尝试推送新补丁进行审核时,我收到错误:
! [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?
答案 0 :(得分:5)
是的,你可以根据unmerged commit-B推送commit-C,但你不能挑选它,因为这样你就可以得到基于commit-B'的commit-C(一个不同的提交,在比较时没有变化)与原始提交-B。
尝试此程序:
签出未合并的提交-B(从Gerrit复制此命令>更改>下载>结帐):
git fetch https://USER@SERVER/a/REPO-PATH/REPO-NAME refs / changes / X / Y / Z&& git checkout FETCH_HEAD
从commit-B
创建分支git checkout -b some-branch
将commit-C更改,提交并推送到Gerrit
我认为Gerrit将使用commit-C基于之前更改的commit-B创建更改。请注意,如果有人更改了原始提交-B,您需要在合并之前重新提交commit-C。
答案 1 :(得分:1)
另一种选择可能是在开发过程中简单地将两个提交合并(压缩)为一个(在B中单独的更改集中)并且一旦B合并,您可以在主服务器上重新绑定,这将只留下您的独特更改