如何重新选择樱桃挑选父母的新版本

Ash*_*dal 5 git git-rebase gerrit

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

GITK

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

我们使用Gerrit进行代码审查.Commit 1和Commit 2都在审核中,尚未合并.我正在使用Commit 1,它需要在Commit 2中使用代码,因此必须以它为基础.这些是我使用的命令:

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

  2. 进行我的工作所需的更改并推送变为Commit 1的更改.当我第一次推送Commit 1时,它基于Commit 2的patchset 8.

当我收到关于我的提交(提交1)的评论评论时,我在Gerrit上推送新的补丁集.但是,当它最终合并时,它需要在它的父(Commit 2)的最新补丁集上.我现在这样做的方式如下:

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

有没有办法让我可以在不执行上述所有操作的情况下获取最新的Commit 2补丁集?也许是某种互动的樱桃挑选或反叛?

tha*_*era 5

您可以简单地将Commit 1重新绑定到FETCH_HEAD.在work2分支上,

$ git fetch ssh://user@gerrit.dev.xyz.net:29418/management-console refs/changes/26/11926/11 
$ git rebase -i FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

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

  • git fetch仅从远程获取_fetches_的更改,然后将其存储在FETCH_HEAD中;新的更改不会进入分支。当您`git cherry-pick FETCH_HEAD`时,您正在当前分支中创建此最新提交的副本。是的,实际上我们要做的是在此新的FETCH_HEAD之上重新设置Commit 1。 (2认同)