从 Gerrit 拉补丁集到当前分支
Pull patchset from Gerrit into current branch
我正在处理本地功能分支。当我将提交推送到 Gerrit 时,会创建一个 Change,其他团队成员可以签出。如果有人修改我的提交并保留提交的 Change-Id,则会在 Gerrit 上创建一个新的 补丁集。
现在我想获取其他团队成员的更改。我只是想在我当前的分支中使用来自 Gerrit 的最新补丁集。我没有做任何其他更改,因此不需要合并任何内容。
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 命令都会导致合并错误。 checkout 命令检查一个分离的头,我可以从中创建一个新分支,然后在那个新分支上工作 - 这可行,但我真的不想为每个补丁集创建一个新分支。
是否有命令可以将新的 Patch Set 直接加载到我当前的分支中?
在您的情况下,您不能使用 "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"命令,然后再检查移动分支指针:
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 fetch https://example.org/gerrit/ refs/changes/123/456789/2 && git reset FETCH_HEAD
我正在处理本地功能分支。当我将提交推送到 Gerrit 时,会创建一个 Change,其他团队成员可以签出。如果有人修改我的提交并保留提交的 Change-Id,则会在 Gerrit 上创建一个新的 补丁集。
现在我想获取其他团队成员的更改。我只是想在我当前的分支中使用来自 Gerrit 的最新补丁集。我没有做任何其他更改,因此不需要合并任何内容。
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 命令都会导致合并错误。 checkout 命令检查一个分离的头,我可以从中创建一个新分支,然后在那个新分支上工作 - 这可行,但我真的不想为每个补丁集创建一个新分支。
是否有命令可以将新的 Patch Set 直接加载到我当前的分支中?
在您的情况下,您不能使用 "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"命令,然后再检查移动分支指针:
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 fetch https://example.org/gerrit/ refs/changes/123/456789/2 && git reset FETCH_HEAD