我正在本地功能分支上工作。当我向 Gerrit 推送提交时,会创建一个更改,其他团队成员可以 checkout 。如果有人修改了我的提交并保留了提交的 Change-Id,则会在 Gerrit 上创建一个新的补丁集。
现在我想让其他团队成员发生变化。我只想在我当前的分支中使用 Gerrit 的最新补丁集。我没有进行任何其他更改,因此无需 merge 任何内容。
Gerrit 为补丁集 2 提供了一些下载链接,例如这些 Pull、Cherry Pick 和 Checkout 命令:
git pull https://example.org/gerrit/ refs/changes/123/456789/2
git fetch https://example.org/gerrit/ refs/changes/123/456789/2 && git cherry-pick FETCH_HEAD
git fetch https://example.org/gerrit/ refs/changes/123/456789/2 && git checkout FETCH_HEAD
我尝试了它们,但它们并没有按照我想要的方式工作。 pull 和cherry pick 命令都会导致 merge 错误。 checkout 命令会 check out 一个分离的头,我可以从中创建一个新分支,然后在该新分支上工作——这可行,但我并不真的想为每个补丁集创建一个新分支。
是否有命令将新补丁集直接加载到我当前的分支中?
最佳答案
在您的情况下,您不能使用“pull”或“cherry-pick”选项,因为两者都会根据您的原始提交创建一个新提交。
假设 B 是你的提交,C 是你的同事:
A --- B <= YOUR-BRANCH
\
\-- C
如果执行“pull ”命令:
A --- B --- D <= YOUR-BRANCH
\ /
\-- C --/
如果执行“cherry-pick”命令:
A --- B --- D <= YOUR-BRANCH
\
\-- C
正确的做法是执行“checkout”命令,然后执行另一个 checkout 来移动分支指针:
git fetch https://GERRIT-SERVER/a/REPO refs/changes/CHANGE/PATCHSET && git checkout FETCH_HEAD
git checkout -B YOUR-BRANCH
你会得到这个:
A --- B
\
\-- C <= YOUR-BRANCH
关于git - 将补丁集从 Gerrit pull 入当前分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51743564/