You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gerrit技术问询:批量下载补丁及多人协同使用同一Change-ID

Gerrit相关问题解答

1. 如何从Gerrit下载/应用所有补丁?

分两种常见场景处理:

场景1:下载单个变更的所有补丁集

每个Gerrit变更的补丁集对应独立的Git引用,格式为refs/changes/[两位数字]/[变更ID]/[补丁集编号]。要获取该变更的所有补丁集:

git fetch origin refs/changes/XX/CHANGE_ID/*:refs/changes/XX/CHANGE_ID/*

替换XX为变更ID的最后两位数字,CHANGE_ID为Gerrit变更的数字ID(比如变更URL是/c/project/+/12345,则CHANGE_ID是12345,XX是45)。

拉取完成后,可为每个补丁集创建本地分支保存:

# 保存补丁集1
git checkout -b change-12345-ps1 refs/changes/45/12345/1
# 保存补丁集2
git checkout -b change-12345-ps2 refs/changes/45/12345/2

场景2:批量下载分支上所有未合并变更

如果要拉取目标分支下所有未合并的Gerrit变更,可使用git review的批量同步命令:

git review -s branch_name

该命令会将分支下所有未合并变更拉取到本地,每个变更对应一个临时分支。

2. 多人共用同一Change-ID协作及补丁集同步问题

多人协作的核心逻辑

你们当前的操作流程是可行的:

git review -d change_id;
git add -A;
git commit --amend;
git review branch_name; // 推送到同一变更的分支

但需注意:每次有人推送新补丁集后,其他人必须先同步最新补丁集,再基于此修改,避免后续合并冲突。

解决看不到他人补丁集的问题

git review -d change_id默认仅拉取当前用户推送的补丁集,要获取他人的补丁集,需手动拉取对应引用:

  1. 先在Gerrit网页上确认目标补丁集的编号(比如你要找的补丁集2)
  2. 拉取指定补丁集:
git fetch origin refs/changes/XX/CHANGE_ID/2:refs/changes/XX/CHANGE_ID/2
  1. 为该补丁集创建本地分支,即可同时保留自己的补丁集1、3和他人的补丁集2:
git checkout -b change-12345-ps2 refs/changes/XX/CHANGE_ID/2

如果想一次性拉取该变更的所有补丁集(含他人推送的),直接用场景1的批量fetch命令即可。

内容的提问来源于stack exchange,提问作者Garik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 03:10:08