跳到主要内容

Git 统一差异补丁生成器

API reference

比较两段文本,并使用 Myers 差分算法生成带有正确 @@ hunk 头的 Git 风格统一差异文件(.patch)。可配置上下文行数以及 a/b 文件路径。

输入

每处更改前后显示的未更改行数(标准 diff -u 为 3)。

输出

Unified diff (.patch)
 

输入两段文本以查看差异。

差异视图 HTML
 
这对您有帮助吗?

使用此工具的更多方式

REST API

curl -X POST https://api.iotools.cloud/v1/tool/git-unified-diff-patch-generator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "originalText": "line one\nline two\nline three",
    "modifiedText": "line one\nline 2\nline three",
    "fromFile": "a.txt",
    "toFile": "b.txt",
    "contextLines": "3"
  }'

替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。

让 AI 代理执行

Use the IOTools `git-unified-diff-patch-generator` tool (Git Unified Diff Patch Generator) on this input:

YOUR_INPUT_HERE

将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。

嵌入式小组件

<iframe
  src="https://iotools.cloud/embed/git-unified-diff-patch-generator/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="Git 统一差异补丁生成器 — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

把它放到您自己的页面上——免费,无需密钥,只需保留一个反向链接。

每次 API/MCP 调用费用5 积分起
需要更多积分?查看定价

也可通过

使用指南

粘贴同一文件的两个版本,即可获得可直接应用的 unified diff 补丁——格式与 git diff 和 diff -u 生成的完全一致,即 --- a、+++ b、@@ -l,s +l,s @@。所有处理都在您的浏览器中完成,您粘贴的内容永远不会离开您的设备。

什么是 unified diff?

unified diff 是描述两个文件之间差异的标准文本格式。每个补丁都以两行表头开始,分别标明原始文件(---)和修改后的文件(+++),随后是一个或多个 hunk(差异块)。每个 hunk 以类似 @@ -12,7 +12,8 @@ 的表头开始,记录两侧的起始行和行数,然后列出上下文行(以空格开头)、删除行(-)和新增行(+)。Git 在提交中存储的正是这种格式,代码审查工具也会渲染它,而 patch 和 git apply 则会读取它。

使用方法

  1. 将原始文本粘贴到 原文 框中,将修改后的文本粘贴到 修改后 框中。
  2. 可选:设置 原始文件路径 和 修改后文件路径——它们会成为 --- a.txt / +++ b.txt 表头行。如果您打算用 git apply 应用结果,请使用真实的仓库路径(例如 a/src/index.js)。
  3. 如果需要在每处更改周围显示更多或更少的未更改行,请调整 上下文行数。默认值 3 与 diff -u 一致;如需最紧凑的补丁,可设为 0。
  4. 复制生成的补丁,或将其下载为 .patch 文件。

差异的计算方式

本工具使用 Myers 的 O(ND) 差分算法——这与 Git 所基于的最短编辑脚本方法相同。Myers 算法会找出将原文变为修改后文本所需的最少插入和删除操作,然后按您选择的上下文行数将这些编辑归并为 hunk。位于上下文窗口两倍范围内的相邻更改会合并为一个 hunk,与 diff -u 的行为完全一致,因此输出与标准工具逐字节兼容。

应用补丁

将输出保存为 changes.patch,然后使用 git apply changes.patch 或 patch -p0 < changes.patch 应用。如果您使用了 a/… 和 b/… 路径前缀,git apply -p1 会将它们映射到您的工作树。

对代码是否准确?

是的。行级差异是确定性的,对于相同输入,其结果(包括 hunk 表头和行数)与 GNU diff -u 一致。它按整行进行比较,因此单个字符的更改会显示为一行删除和一行新增——这是基于行的补丁的常规行为。

隐私

所有处理都在您的浏览器中于客户端完成。您的文本绝不会被上传、记录或发送到服务器,因此本工具可安全用于专有源代码和其他敏感文件。

常见问题

应该使用多少上下文行数? 三行是通用的默认值,也是审查者通常期望的。如果补丁需要更多周围代码才便于阅读,可以增加;若要最紧凑的差异,可设为 0。

能否为全新或已删除的文件生成补丁? 可以——将其中一侧留空即可。原文留空会生成全部为新增行的补丁;修改后留空则会生成全部为删除行的补丁。

diffpatchgitunified-diffmyerscompare

工作流的一部分

全部工具集

喜欢这些工具?去掉广告吧。

一次性付款即可永久移除您账户中的所有广告。无需订阅,不追踪。