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

Gerrit中如何将未合并Patchset应用到本地,替换文件且不合并主分支?

Gerrit本地应用未合并Patchset并替换指定文件的操作方法

先确认本地仓库已经关联了Gerrit远程库(一般命名为gerrit)。

1. 获取Patchset的应用命令或补丁文件

打开Gerrit上该Patchset的页面,点击Download按钮展开选项:

  • 选择Cherry Pick,复制对应的命令(格式类似git fetch gerrit refs/changes/XX/YYYYY/Z && git cherry-pick FETCH_HEAD);
  • 或者选择Patch,下载.patch格式的补丁文件。

2. 将Patchset应用到本地(不影响远程仓库)

方法一:用Cherry-pick(推荐)

在本地仓库根目录直接执行复制的命令:

git fetch gerrit refs/changes/XX/YYYYY/Z && git cherry-pick FETCH_HEAD

这个操作会把Patchset的所有变更叠加到当前本地分支上,全程仅在本地生效,不会推送至远程仓库。

方法二:用补丁文件

下载补丁文件后,在本地仓库根目录执行:

git apply /本地补丁文件路径/xxx.patch

如果遇到冲突,可添加--reject参数先保留冲突文件,后续手动处理:

git apply --reject /本地补丁文件路径/xxx.patch

3. 仅保留目标8个文件的变更(若Patchset含其他无关改动)

如果该Patchset包含你不需要的其他文件变更,按以下步骤只保留指定8个文件的改动:

  1. 先按上述步骤将完整Patchset应用到本地;
  2. 重置不需要的文件至本地当前版本:
    git checkout HEAD -- 无关文件路径1 无关文件路径2 ...
    
  3. 调整本地提交(按需操作):
    git add 目标8个文件的路径
    git commit --amend --no-edit
    
    其中--amend用于修改刚完成的cherry-pick提交,仅保留目标文件的变更;--no-edit表示直接沿用原提交信息,无需修改。

关键说明

  • 所有操作仅在本地仓库生效,不会对Gerrit远程仓库的分支或Patchset产生任何影响;
  • 无需合并Master分支,Cherry-pick或补丁应用是直接将Patchset的变更叠加到当前本地分支上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:12:35