Git 统一差异与补丁生成器
指导
Git 统一差异与补丁生成器
粘贴原始片段和修改后的片段,以立即生成有效的统一差异 .patch 格式。输出使用正确的块头(@@ -L,N +L,N @@)以便使用 git apply 或标准 patch 工具——无需手动修复。
如何使用
- 将原始文本粘贴到 Original 文本区域。
- 将修改后的版本粘贴到 已修改 文本区域。
- 可选地调整 原始路径 且 修改后路径 以设置统一差异头中使用的文件名。
---且+++标头。 - 拖动 上下文行 滑块以选择围绕每个变更的未更改行数量(0–10)。
- 复制统一差异或下载为
changes.patch以供使用git apply或patch -p1.
特征
- 符合标准的统一差异 ——正确的块头、行数和上下文处理。
- 可配置的上下文 ——为每个块选择 0 到 10 行的周围上下文行。
- 自定义文件路径 ——设置
a/且b/文件名,以便差异针对正确的文件。 - 统计摘要 ——即时显示添加和删除行的 +N / -N 读数。
- 一键下载 ——将差异导出为
changes.patch,可直接用于git apply. - 完全在浏览器中运行 ——无需上传;页面加载后即可离线使用。
何时使用此工具
每当需要将代码变更作为补丁共享时,请使用此生成器——例如,在问题跟踪器上发布、通过邮件发送贡献,或将 AI 建议的编辑粘贴到真实代码库中。它特别适用于将 LLM 的“之前/之后”片段转换为可直接通过一条命令应用的补丁。
常问问题
-
什么是统一差异?
统一差异是描述两个文件之间变更的标准文本格式。它以两个标题行(--- 原始 和 +++ 新)开始,后跟一个或多个块。每个块以 @@ -oldStart,oldCount +newStart,newCount @@ 开头,并列出上下文、删除(-)和添加(+)的行。该格式由 GNU diff 工具推广,并且是 git apply 和 patch 默认期望的格式。
-
git apply 如何使用统一差异?
git apply 读取统一差异,并将每个块重放至工作树中的匹配文件。它使用块的行号和周围上下文来定位变更位置,然后执行添加和删除操作。如果上下文不匹配(因为目标文件已漂移),git apply 会拒绝该补丁,除非您传递诸如 --3way 或 --reject 的选项。
-
@@ -1,5 +1,6 @@ 中的数字是什么意思?
块头告诉您变更的位置以及它在每侧覆盖的行数。-1,5 表示原始文件段从第 1 行开始,覆盖 5 行(删除的行加上上下文行)。+1,6 表示新文件段从第 1 行开始,覆盖 6 行(添加的行加上上下文行)。当计数为 1 时,逗号和数字有时会被省略(例如,@@ -42 +42 @@)。
-
为什么补丁中的额外上下文行很重要?
上下文行是打印在每个变更上方和下方的未更改行。它们为补丁工具提供了在目标文件中查找变更的锚点,即使周围的代码已移动几行。更多的上下文(例如 5 或 7 行)使补丁对小漂移更具鲁棒性,但也使其更大;GNU diff 的默认值为 3 行,通常是一个良好的平衡。
