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

Сравнение 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
 
Это было полезно?

Другие способы использовать этот инструмент

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": ""
  }'

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

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

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

YOUR_INPUT_HERE

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

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

<iframe
  src="https://iotools.cloud/embed/yaml-diff-comparator/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="Сравнение YAML-документов — 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 кредитов
Нужно больше кредитов?Посмотреть тарифы

Также доступно через

Руководства

Вставьте две версии 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

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

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