Git Patch的使用:

0 阅读3分钟

一、菜单功能对应说明

image.png

截图里 Patch 子菜单三个选项:

  1. Create Patch from Local Changes... 从本地未提交改动生成 .patch 文件(导出补丁,发给别人合代码)
  2. Apply Patch... 读取本地 .patch 文件,把补丁变更合并到当前代码(你之前导入补丁用的入口)
  3. Apply Patch from Clipboard... 直接粘贴剪贴板里的 diff 文本,临时打补丁,不用存文件

二、1. Create Patch from Local Changes(导出补丁)

用途

把你本地修改打包成 patch 文件,发给同事 / Gerrit,对方导入就能复现你的代码改动。

操作步骤

  1. 先改好代码,不要 commit;

  2. 右键项目 → Patch → Create Patch from Local Changes...

  3. 弹窗配置:

    • Patch file name:自定义文件名(规范 [TICKET-ID]_xxx.patch
    • Comment:填写需求 / 修改说明(Gerrit 提交注释)
    • 下方文件列表:勾选要导出的文件,取消不需要的
  4. 选择保存路径,生成 .patch 文件发给别人。

补充

  • 只导出本地未提交的变更;
  • 如果要导出已 commit 提交的补丁,用 Git 命令:git format-patch 提交ID

三、2. Apply Patch...(导入本地补丁,你之前的场景)

用途

读取别人给你的 .patch 文件,把文件变更合并到本地工程。

操作流程

  1. 右键项目 → Patch → Apply Patch...

  2. 选中你的 .patch 文件,打开预览界面:

    • ✅ 绿色:新增文件,无基线问题,直接勾选;
    • ⚫黑色:修改文件,本地存在,正常合并;
    • 🔴红色 missing base:本地找不到补丁记录的原始基线文件;解决:点击 Select missing base,选中本地当前同路径文件作为基准(不存在文件,可以创建一个空文件,否则不能提交)。
  3. 按需勾选需要导入的文件(只想导入单个文件就取消其他勾选);

  4. 点击 Apply,完成补丁合并。

常见报错处理

  1. missing base:本地无补丁原始版本,手动 Select base 选中本地现有文件;
  2. 代码冲突:文件旁出现冲突标记,双击打开 Merge 窗口手动解决;
  3. 只想导入单个文件:取消其他文件勾选,仅保留目标文件。

四、3. Apply Patch from Clipboard...(剪贴板临时补丁)

用途

临时复制一段 diff 代码,不保存文件直接应用,适合小段代码调试。

操作

  1. 复制一段 git diff 文本;
  2. 右键 → Patch → Apply Patch from Clipboard...
  3. 预览变更,确认后 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

六、开发规范小提示

  1. Patch 命名统一:[TICKET-ID]_功能名.patch,和你截图里命名规范一致;
  2. 导入 Patch 前先拉取远端代码,避免大量冲突;
  3. 导入后必须查看 Git Changes,核对文件变更,防止多余文件被带入;
  4. Gerrit 提交优先用 git format-patch,兼容性比 IDE 导出 patch 更好。