一、菜单功能对应说明
截图里 Patch 子菜单三个选项:
- Create Patch from Local Changes... 从本地未提交改动生成
.patch文件(导出补丁,发给别人合代码) - Apply Patch... 读取本地
.patch文件,把补丁变更合并到当前代码(你之前导入补丁用的入口) - Apply Patch from Clipboard... 直接粘贴剪贴板里的 diff 文本,临时打补丁,不用存文件
二、1. Create Patch from Local Changes(导出补丁)
用途
把你本地修改打包成 patch 文件,发给同事 / Gerrit,对方导入就能复现你的代码改动。
操作步骤
-
先改好代码,不要 commit;
-
右键项目 → Patch → Create Patch from Local Changes...
-
弹窗配置:
- Patch file name:自定义文件名(规范
[TICKET-ID]_xxx.patch) - Comment:填写需求 / 修改说明(Gerrit 提交注释)
- 下方文件列表:勾选要导出的文件,取消不需要的
- Patch file name:自定义文件名(规范
-
选择保存路径,生成
.patch文件发给别人。
补充
- 只导出本地未提交的变更;
- 如果要导出已 commit 提交的补丁,用 Git 命令:
git format-patch 提交ID。
三、2. Apply Patch...(导入本地补丁,你之前的场景)
用途
读取别人给你的 .patch 文件,把文件变更合并到本地工程。
操作流程
-
右键项目 → Patch → Apply Patch...
-
选中你的
.patch文件,打开预览界面:- ✅ 绿色:新增文件,无基线问题,直接勾选;
- ⚫黑色:修改文件,本地存在,正常合并;
- 🔴红色
missing base:本地找不到补丁记录的原始基线文件;解决:点击Select missing base,选中本地当前同路径文件作为基准(不存在文件,可以创建一个空文件,否则不能提交)。
-
按需勾选需要导入的文件(只想导入单个文件就取消其他勾选);
-
点击 Apply,完成补丁合并。
常见报错处理
missing base:本地无补丁原始版本,手动 Select base 选中本地现有文件;- 代码冲突:文件旁出现冲突标记,双击打开 Merge 窗口手动解决;
- 只想导入单个文件:取消其他文件勾选,仅保留目标文件。
四、3. Apply Patch from Clipboard...(剪贴板临时补丁)
用途
临时复制一段 diff 代码,不保存文件直接应用,适合小段代码调试。
操作
- 复制一段 git diff 文本;
- 右键 → Patch → Apply Patch from Clipboard...
- 预览变更,确认后 Apply 即可。
五、Git 命令行 Patch 配套用法(IDE 操作失败时兜底)
1. 导出本地改动为 patch
bash
运行
# 导出全部未提交修改到patch文件
git diff > my_change.patch
2. 应用 patch(只指定单个文件)
bash
运行
# 仅对ZeekrPropertyHandler.kt应用补丁,忽略其他文件
git apply --include="*ZeekrPropertyHandler.kt" "C:/xxx/ART333.patch"
# 强制合并,冲突生成.rej文件手动处理
git apply --reject xxx.patch
3. 撤销已经应用的 patch
bash
运行
git apply --reverse xxx.patch
4. 导出已提交 commit 的完整补丁(Gerrit 常用)
bash
运行
# 生成单个提交的patch
git format-patch -1 你的commitId
六、开发规范小提示
- Patch 命名统一:
[TICKET-ID]_功能名.patch,和你截图里命名规范一致; - 导入 Patch 前先拉取远端代码,避免大量冲突;
- 导入后必须查看 Git Changes,核对文件变更,防止多余文件被带入;
- Gerrit 提交优先用
git format-patch,兼容性比 IDE 导出 patch 更好。