在历史记录中将更新应用于git补丁时,正确的工作流程是什么

时间:2015-04-09 07:29:42

标签: git workflow gerrit

我已经向Gerrit服务器提交了一系列补丁以供审核,并且它们都是按顺序在同一个项目中进行的。 现在其他人已将更新推送到序列中的第一个补丁之一,我想将其从gerrit中拉下来进行测试。 这样做的正确步骤是什么? 我知道我可以git reset - 硬回到补丁之前,然后樱桃挑选或回购逐个下载每个补丁。由于它只是一个真正改变的补丁,我发现有点矫枉过正。 有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

查找有人在您的历史记录中进行更新的提交的提交哈希值,并结帐到该哈希值,例如

$ git checkout 1358ffb  # use your own hash here

然后在那里创建一个分支并结帐到它

$ git checkout -b new_branch

由于有人用另一个覆盖了您的提交,我们需要替换它。重置为提交的父级。

$ git reset --hard HEAD^

现在你可以选择更新提交'来自格里特这里。请注意,此命令只是一个示例,您需要使用自己的详细信息和网址等。基本上只需从gerrit Web UI复制粘贴樱桃选择网址。

$ git fetch ssh://kimusan@example.com:29418/project-name refs/changes/04/104/1 && git cherry-pick FETCH_HEAD

现在我们需要将其他提交重新绑定到此。 Checkout master(或树顶部的任何东西)并将其重新绑定到new_branch

$ git checkout master
$ git rebase new_branch

Git现在将您刚刚更新后的所有提交放回到它之上。如果需要,您可以立即删除new_branch

$ git branch -d new_branch