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

Сравнение YAML-документов

Сравните два YAML-документа и точно увидьте, что изменилось, — добавленные, удалённые и изменённые ключи с путём к каждому из них, а также построчный unified diff нормализованного YAML. Структурное сравнение игнорирует отступы, кавычки и различия flow- и block-стиля, а также поддерживает потоки из нескольких документов. Работает полностью в вашем браузере.

Ввод

Параметры

Используйте режим «без учёта порядка», когда список на самом деле является неупорядоченным множеством и его перестановка не должна считаться изменением.

Считать 1 и "1", а также true и "true" равными — полезно, когда один файл заключает значения в кавычки, а другой нет.

Вывод

Сводка
МетрикаЗначение
No data yet
Структурный diff
 

Каждое различие с указанием пути — + добавлено, - удалено, ~ изменено.

Unified diff (нормализованный YAML)
 

Оба документа сначала заново сериализуются с отступом в 2 пробела, поэтому различия форматирования не создают шума.

Enter both documents to see the differences.

Diff view HTML
 
Это было полезно?

Руководства

Вставьте две версии YAML-файла — манифест Kubernetes до и после изменения, две конфигурации CI-конвейера или docker-compose.yml в разных окружениях — и точно увидьте, чем они отличаются. Этот бесплатный онлайн-инструмент читает оба документа как разобранный YAML, а не как обычный текст, поэтому сдвиг отступа, кавычки вокруг значения или переход от block-стиля к flow-стилю никогда не покажутся изменением. Вы получаете структурный отчёт с путём к каждому различию, а также нормализованный unified diff, который можно скопировать в файл патча. Всё работает в вашем браузере — без загрузки файлов и регистрации.

Как пользоваться

  1. Вставьте исходный файл в YAML A, а изменённый — в YAML B.
  2. Выберите способ сравнения элементов списков — по позиции (по умолчанию; подходит для упорядоченных списков вроде аргументов контейнера) или без учёта порядка (подходит для списка, который на самом деле является множеством: теги, разрешённые хосты).
  3. Включите Игнорировать различия типов, если один файл заключает значения в кавычки, а другой нет, — тогда 8080 и "8080" будут считаться равными.
  4. Смотрите Сводку для подсчётов, Структурный diff для списка изменений по путям и Unified diff для построчного вида.

Результат обновляется автоматически по мере ввода.

Как структурный diff определяет, что изменилось?

Оба файла разбираются, а затем два полученных значения обходятся вместе. В каждом отображении (mapping) инструмент сообщает о ключах, присутствующих только с одной стороны (добавленных или удалённых), и рекурсивно спускается в ключи, присутствующие с обеих; в каждой последовательности (sequence) элементы сравниваются один за другим; для каждого скаляра сравнивается значение. Каждая запись начинается с + (добавлено), - (удалено) или ~ (изменено) и пути через точку вида spec.template.spec.containers[0].image, так что вы сразу перейдёте к нужной строке даже в манифесте на 400 строк.

Почему «структурный» diff лучше обычного текстового?

Потому что большинство текстовых различий в YAML — не настоящие различия. ports: [80, 443] и block-последовательность из двух строк — это одни и те же данные; то же верно для name: app и "name": app; и для того же файла, у которого отступы изменились с 4 пробелов на 2. Построчный diff сообщит обо всех этих случаях. Этот инструмент не сообщит ни об одном — только о изменениях, которые действительно дойдут до того, кто использует файл.

Тогда зачем ещё и unified diff?

Потому что именно построчный вид вставляется в патч или code review. Чтобы он оставался полезным, оба файла сначала заново сериализуются из разобранного вида с фиксированным отступом в 2 пробела, и сравнивается уже этот нормализованный текст — поэтому в патче видны реальные правки, а не шум форматирования.

Поддерживаются ли файлы из нескольких документов?

Да. Потоки, разделённые ---, сравниваются документ за документом по порядку, а пути получают префикс doc[2].…, чтобы было понятно, к какому документу относится различие. Лишние документы с любой стороны помечаются как добавленные или удалённые.

А как же комментарии?

Комментарии не сравниваются. Они не несут смысла ни для одного потребителя данных, а обе картины строятся по разобранным документам, которые их не сохраняют.

Мои данные в безопасности?

Полностью. Разбор и сравнение происходят целиком в вашем браузере — ни один файл не загружается, не логируется и не сохраняется, что важно, когда сравнивается продакшен-манифест.

Нужен не только diff для YAML?

Для сравнения JSON используйте инструмент JSON Compare; для XML — XML Diff Comparator. Если один из файлов не разбирается, валидатор YAML укажет на синтаксическую ошибку.

yamldiffcomparechangeskubernetesdeveloper

Use it from code

From 3 credits per call

REST API

curl -X POST https://api.iotools.cloud/v1/tool/yaml-diff-comparator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "yamlA": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n …",
    "yamlB": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n …",
    "seqOrder": "position",
    "looseScalars": ""
  }'

Swap in your own key from your account. The tool's fields are the body — no wrapper.

Ask an AI agent

Use the IOTools `yaml-diff-comparator` tool (YAML Diff Comparator) on this input:

YOUR_INPUT_HERE

Paste this at any agent connected to the IOTools MCP server, then add your input.

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

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