git - 如何基于新版本的 cherry-pick 的 parent

标签 git git-rebase gerrit

考虑以下突出显示的提交:

GITK

对于当前的讨论,我将按如下方式引用提交: 提交 1:从用户设置中读取语言设置 提交 2:[POC] 不审查

我们使用 Gerrit 进行代码审查。 Commit 1 和 Commit 2 都在审核中,没有 merge 。我正在处理 Commit 1,它需要 Commit 2 中的代码,因此必须基于它。这些是我使用的命令:

  1. Cherry Pick Commit 2. 我使用从 Gerrit 获取的 cherry-pick 命令进行更改: Cherry-pick Commit 2

  2. 进行我的工作所需的更改并推送成为提交 1 的更改。当我第一次推送提交 1 时,它基于提交 2 的补丁集 8。

当我收到关于我的提交(提交 1)的评论意见时,我会在 Gerrit 上为它推送新的补丁集。但是,当它最终要 merge 时,它需要位于其父级的最新补丁集上(提交 2)。我现在的做法如下:

  1. git checkout 工作2
  2. git reset --hard remotes/origin/head
  3. Cherry-pick Commit 2 ---> 这让我得到了 Commit 2 的最新版本
  4. Cherry-pick Commit 1
  5. git push origin working2:refs/for/head

有没有一种方法可以在不执行上述所有操作的情况下获取 Commit 2 的最新补丁集?也许是某种交互式的 cherry pick 或 rebase?

最佳答案

您可以简单地将 Commit 1 rebase 到 FETCH_HEAD。在 working2 分支上,

$ git fetch ssh://user@gerrit.dev.xyz.net:29418/management-console refs/changes/26/11926/11 
$ git rebase -i FETCH_HEAD

删除包含 Commit 2 的提交消息的行(通常是第一行)。现在 Commit 1 将位于最新的 Commit 2 之上。如果您不熟悉交互式 rebase,请查看 here .

关于git - 如何基于新版本的 cherry-pick 的 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737749/

相关文章:

diff - 比较gerrit中的图像

git - TFS2013 - 使用 git 克隆团队项目的构建定义

git - 在 OVH 共享服务器上使用 Git 部署 Symfony 网站

Git rebase -i 不在终端中/仅适用于 sudo

git - 为什么我不能对 merge 的主题分支进行 rebase ?

git - 在没有交互式 rebase 的情况下压缩历史中间的两个 Git 提交

gerrit - 在Gerrit注释中的另一个列表内创建一个列表

git - git-review 是如何工作的?

git - 在先前 merge 到开发分支后删除或重新 merge Gitlow 功能分支是否安全?

Git:重置+强制推送与恢复的优缺点是什么