考虑以下突出显示的提交:
对于当前的讨论,我将按如下方式引用提交: 提交 1:从用户设置中读取语言设置 提交 2:[POC] 不审查
我们使用 Gerrit 进行代码审查。 Commit 1 和 Commit 2 都在审核中,没有 merge 。我正在处理 Commit 1,它需要 Commit 2 中的代码,因此必须基于它。这些是我使用的命令:
Cherry Pick Commit 2. 我使用从 Gerrit 获取的 cherry-pick 命令进行更改:
进行我的工作所需的更改并推送成为提交 1 的更改。当我第一次推送提交 1 时,它基于提交 2 的补丁集 8。
当我收到关于我的提交(提交 1)的评论意见时,我会在 Gerrit 上为它推送新的补丁集。但是,当它最终要 merge 时,它需要位于其父级的最新补丁集上(提交 2)。我现在的做法如下:
- git checkout 工作2
- git reset --hard remotes/origin/head
- Cherry-pick Commit 2 ---> 这让我得到了 Commit 2 的最新版本
- Cherry-pick Commit 1
- 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/