将更新应用到历史上的 git 补丁时正确的工作流程是什么
What is the right workflow when applying an update to a git patch back in history
我已经向 Gerrit 服务器提交了一系列补丁以供审查,它们都在同一个项目中按时间顺序排列。
现在其他人已将更新推送到序列中的第一个补丁之一,我想将其从 gerrit 中拉下来进行测试。
这样做的正确步骤是什么?
我知道我可以 git reset --hard 回到补丁之前,然后 cherry-pick 或 repo 一个一个地下载每个补丁。由于它只是一个真正改变的补丁,所以我觉得有点矫枉过正。
有更好的方法吗?
在您的历史记录中找到某人更新的提交的提交哈希,并签出该哈希,例如
$ git checkout 1358ffb # use your own hash here
然后在那里创建一个分支并结帐
$ git checkout -b new_branch
由于有人用另一个覆盖了您的提交,我们需要替换它。重置为提交的父项。
$ git reset --hard HEAD^
现在您可以在这里从 gerrit 中挑选 'update commit'。请注意,此命令只是一个示例,您需要使用自己的详细信息和 url 等。基本上只需从 gerrit web UI.[=16 复制粘贴 cherry-pick url =]
$ 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
我已经向 Gerrit 服务器提交了一系列补丁以供审查,它们都在同一个项目中按时间顺序排列。 现在其他人已将更新推送到序列中的第一个补丁之一,我想将其从 gerrit 中拉下来进行测试。 这样做的正确步骤是什么? 我知道我可以 git reset --hard 回到补丁之前,然后 cherry-pick 或 repo 一个一个地下载每个补丁。由于它只是一个真正改变的补丁,所以我觉得有点矫枉过正。 有更好的方法吗?
在您的历史记录中找到某人更新的提交的提交哈希,并签出该哈希,例如
$ git checkout 1358ffb # use your own hash here
然后在那里创建一个分支并结帐
$ git checkout -b new_branch
由于有人用另一个覆盖了您的提交,我们需要替换它。重置为提交的父项。
$ git reset --hard HEAD^
现在您可以在这里从 gerrit 中挑选 'update commit'。请注意,此命令只是一个示例,您需要使用自己的详细信息和 url 等。基本上只需从 gerrit web UI.[=16 复制粘贴 cherry-pick url =]
$ 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