git - Gerrit:有没有办法将最高提交推送到同一个分支?

标签 git gerrit

在搜索了一盏灯并找到了很多类似的问题之后,它们似乎都没有真正回答我的问题(在我找到的相关问题列表下面)。

我正在对尚未审查的提交进行进一步的更改,但我想将这些更改分开。尝试推送新补丁以供审核时,出现错误:

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

场景: 在我的分支中,我有 Commit A (merged) <-- Commit B (cherry-picked/unmerged) <-- 提交 C(我想推送最近的更改)。

如前所述,提交 C 依赖于 B(但由于我希望将它们分开,因此无法进行压缩。删除 B 也不是一种选择,因为它添加了 C 尚未存在的更改)。

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

我的问题是:在 merge 提交 B 之前,是否有办法将 提交 C 发送到 Gerrit?或者我真的必须等待 B 被 merge ,这样我才能发送提交 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

最佳答案

是的,你可以基于未 merge 的 commit-B 推送 commit-C,但你不能挑选它,因为那样你会得到基于 commit-B' 的 commit-C'(一个不同的提交,比较时没有变化与原始提交-B.

试试这个过程:

  1. 检查未 merge 的提交-B(从 Gerrit > Change > Download > Checkout 复制此命令):

    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 一些分支

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

我认为 Gerrit 将基于先前更改的提交 B 来创建带有提交 C 的更改。请注意,如果有人更改了原始的 commit-B,您将需要在 merge 之前对您的 commit-C 进行 rebase 。

关于git - Gerrit:有没有办法将最高提交推送到同一个分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41432721/

相关文章:

gerrit - 取消隐藏隐藏的 Gerrit 项目

git - Gerrit 代码审查推送到空 repo 不起作用

git - 如何更新依赖于 gerrit 审查下的子模块提交的 git super 项目?

git - 如果编辑了相同文件但不同行,如何在 Git/IntelliJ 中强制手动 merge ?

git - 如何在 Git 提交链上查看贡献者的电子邮件地址?

git - .gitignore 不忽略 node_modules

git 无法在 azure devops 管道中使用 ssh 克隆子模块

git - 如何在没有 git/objects/pack 中的整个存储库的情况下进行 git sparse checkout?

git - 如何为 gerrit 事件配置 Gerrit Webhooks

python - 不推荐使用全局/系统 git-review 配置文件 (git-review.conf)