Перейти к основному содержанию

Генератор патчей unified diff для Git

API reference

Сравните два блока текста и создайте unified diff (.patch) в стиле Git с корректными заголовками hunk @@, используя алгоритм диффа Миерса. Настройте количество строк контекста и пути файлов 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"
  }'

Подставьте свой собственный ключ из аккаунта. Поля инструмента — это тело запроса, без обёртки.

Спросите у ИИ-агента

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

YOUR_INPUT_HERE

Вставьте это любому агенту, подключённому к MCP-серверу IOTools, и добавьте свой ввод.

Виджет для встраивания

<iframe
  src="https://iotools.cloud/embed/git-unified-diff-patch-generator/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="Генератор патчей unified diff для 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 patch — точно в формате --- a, +++ b, @@ -l,s +l,s @@, который создают git diff и diff -u. Всё выполняется в вашем браузере, поэтому вставленный текст никогда не покидает ваш компьютер.

Что такое 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.

Как вычисляется дифф

Инструмент использует алгоритм O(ND) Миерса — тот же подход с кратчайшим скриптом редактирования, на котором построен Git. Алгоритм Миерса находит минимальный набор вставок и удалений, превращающих исходный текст в изменённый, а затем объединяет эти правки в hunk'и с выбранным количеством контекста. Соседние изменения, находящиеся в пределах двойного окна контекста, объединяются в один hunk — точно так же, как это делает diff -u, поэтому результат полностью совместим побайтово со стандартными инструментами.

Применение патча

Сохраните результат в файл changes.patch, затем примените его командой git apply changes.patch или patch -p0 < changes.patch. Если вы использовали префиксы пути a/… и b/…, git apply -p1 сопоставит их с вашим рабочим деревом.

Точен ли он для кода?

Да. Построчный дифф детерминирован и совпадает с diff -u из GNU на тех же входных данных, включая заголовки hunk'ов и количество строк. Сравниваются целые строки, поэтому изменение одного символа отображается как одна удалённая и одна добавленная строка — это обычное поведение для патчей, основанных на строках.

Конфиденциальность

Вся обработка выполняется на стороне клиента, в вашем браузере. Ваш текст никогда не загружается, не записывается в журнал и не отправляется на сервер, поэтому инструмент безопасен для проприетарного исходного кода и других конфиденциальных файлов.

Часто задаваемые вопросы

Какое количество строк контекста использовать? Три — универсальное значение по умолчанию, которого ожидают рецензенты. Увеличьте его, если патчу нужно больше окружающего кода для читаемости; уменьшите до 0 для самого компактного диффа.

Можно ли создать патч для нового или удалённого файла? Да — оставьте одну сторону пустой. Пустой Исходный текст даёт патч только с добавлениями; пустой Изменённый текст даёт патч только с удалениями.

diffpatchgitunified-diffmyerscompare

Часть рабочего процесса

Все подборки

Нравятся инструменты? Уберите рекламу.

Один платёж навсегда убирает всю рекламу с вашего аккаунта. Без подписки, без слежки.