Git 统一差异补丁生成器
比较两段文本,并使用 Myers 差分算法生成带有正确 @@ hunk 头的 Git 风格统一差异文件(.patch)。可配置上下文行数以及 a/b 文件路径。
输入
每处更改前后显示的未更改行数(标准 diff -u 为 3)。
输出
输入两段文本以查看差异。
使用此工具的更多方式
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 则会读取它。
使用方法
- 将原始文本粘贴到 原文 框中,将修改后的文本粘贴到 修改后 框中。
- 可选:设置 原始文件路径 和 修改后文件路径——它们会成为
--- a.txt/+++ b.txt表头行。如果您打算用git apply应用结果,请使用真实的仓库路径(例如a/src/index.js)。 - 如果需要在每处更改周围显示更多或更少的未更改行,请调整 上下文行数。默认值 3 与
diff -u一致;如需最紧凑的补丁,可设为 0。 - 复制生成的补丁,或将其下载为
.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。
能否为全新或已删除的文件生成补丁? 可以——将其中一侧留空即可。原文留空会生成全部为新增行的补丁;修改后留空则会生成全部为删除行的补丁。