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个文件的改动:
- 先按上述步骤将完整Patchset应用到本地;
- 重置不需要的文件至本地当前版本:
git checkout HEAD -- 无关文件路径1 无关文件路径2 ... - 调整本地提交(按需操作):
其中git add 目标8个文件的路径 git commit --amend --no-edit--amend用于修改刚完成的cherry-pick提交,仅保留目标文件的变更;--no-edit表示直接沿用原提交信息,无需修改。
关键说明
- 所有操作仅在本地仓库生效,不会对Gerrit远程仓库的分支或Patchset产生任何影响;
- 无需合并Master分支,Cherry-pick或补丁应用是直接将Patchset的变更叠加到当前本地分支上。
内容的提问来源于stack exchange,提问作者ABD saleem
相关产品推荐
相关产品推荐

