3-сторонний текстовый дифференцировщик и объединитель

РазработчикТекст
Реклама · УДАЛИТЬ?
[iotools_3_way_text_diff_merge_viewer]
Реклама · УДАЛИТЬ?

Гид

3-Way Text Diff & Merge Viewer

3-сторонний текстовый дифференцировщик и объединитель

Вставьте базовую версию вместе с двумя расходящимися версиями (A и B), и инструмент создаст объединённый результат с использованием классического алгоритма diff3. Строки, которые изменились только с одной стороны, объединяются автоматически; строки, которые изменились по-разному с обеих сторон, помечаются как конфликты, которые вы можете разрешить, нажав «Принять A», «Принять B», «Оставить базу» или «Объединить обе стороны» — всё это происходит на клиентской стороне, без необходимости загрузки.

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

  1. Вставьте исходный (базовый) текст в Базовый поле. Это общий предок, с которого начались обе версии.
  2. Вставьте первую редактированную копию в Версия A и вторую редактированную копию в Версия B.
  3. Выберите предустановленную Стратегию при конфликте стратегию (показать маркеры, предпочитать A, предпочитать B или оставить базу).
  4. Проверьте объединённый результат: зелёные границы ОК блоки автоматически объединяются; оранжевые границы Конфликт блоки показывают все три версии и требуют решения.
  5. Для каждого конфликта нажмите Принять A, Принять B, Оставить базу, или Оба чтобы закрепить свой выбор. Используйте Прозрачный чтобы отменить.
  6. Скопируйте или загрузите полученный Объединённый текст когда вы закончите.

Возможности

  • Реальный объединённый merge — на основе LCS выявляются стабильные узлы, общие для всех трёх входов, и группируются изменения между ними.
  • Разрешение конфликтов по отдельности — каждый конфликт отображается в виде боковой разметки A, База и B с возможностью однократного принятия.
  • Объединить обе стороны — выберите «Обе (A, затем B)» или «Обе (B, затем A)», если хотите объединить два редактирования вместо выбора одного.
  • Стандартные маркеры конфликтов — простой вывод использует знаки <<<<<<>>>>>>, что делает результат совместимым с инструментами Git.
  • Предустановленные стратегии — установите «Предпочитать A», «Предпочитать B» или «Оставить базу», чтобы автоматически разрешать каждый конфликт без необходимости нажимать на каждый.
  • Остается в браузере — нет обращения к серверу, нет загрузки; безопасно для исходного кода, черновиков или любого конфиденциального текста.

Почему трёхсторонний мерж?

Двухсторонний дифф может только показать, что два текста отличаются — он не может определить, с какой стороны произошло изменение. Трёхсторонний мерж вводит общий начальный пункт (базу) и использует разницу от этого узла для определения намерений. Если только одна сторона изменила строку, мерж автоматически принимает это изменение. Если обе стороны изменили один и тот же участок по-разному, мерж правильно выявляет конфликт вместо того, чтобы тихо игнорировать изменения одного автора.

Реклама · УДАЛИТЬ?

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

  1. Что такое алгоритм diff3?

    Diff3 — это канонический алгоритм трёхстороннего мержа. Он вычисляет самую длинную общую подпоследовательность между базой и каждой вариацией, затем проходит по общим узлам для классификации участков между ними. Участки, где только одна вариация отличается от базы, применяются автоматически; участки, где обе вариации отличаются от базы по несовместимым способам, превращаются в конфликты. Этот алгоритм используется в классическом стратегии мержа Git и в утилите GNU diff3.

  2. Как работает дифф на основе LCS?

    Наибольшая общая подпоследовательность (LCS) — это самая длинная последовательность строк, которая встречается в обоих входах в том же порядке, с разрешением пропусков. Стандартная таблица динамического программирования вычисляет её длину за O(m*n) времени. Обратный проход по таблице даёт соответствующие пары строк, и всё, что находится вне этих пар, рассматривается как вставка или удаление. LCS даёт минимальный и интуитивный набор изменений без необходимости точного выравнивания.

  3. Почему некоторые изменения автоматически объединяются, а другие превращаются в конфликты?

    В ходе трёхстороннего мержа алгоритм сравнивает каждый интервал между общими узлами тремя способами: база против A, база против B и A против B. Если только одна сторона отличается от базы, изменение несомненно и автоматически принимается. Если обе стороны внесли одинаковые изменения, мерж сохраняет одну копию. Только когда обе стороны изменили участок по-разному, мерж создаёт конфликт, потому что нет автоматического способа учесть намерения обеих сторон одновременно.

  4. Что означают маркеры <<<<<<>>>>>>?

    Эти маркеры взяты из формата конфликта Git в стиле diff3. Блок между <<<<<<>>>>>> показывает версию B. Видение исходной базы вместе с двумя редактированиями упрощает принятие решения о том, какую сторону сохранить или как объединить.

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

    Да. Объединение по строкам рассматривает каждую строку как наименьшую атомарную единицу, что соответствует тому, как пишутся исходный код, конфигурационные файлы и большинство простых текстовых документов. Объединение по символам или по словам может создавать более тонкие изменения, но часто приводит к шумным и трудно разрешаемым конфликтам в текстах с перестройкой. Объединение по строкам является стандартным выбором для инструментов, имитирующих поведение Git.

Хотите убрать рекламу? Откажитесь от рекламы сегодня

Установите наши расширения

Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска

в Расширение Chrome в Расширение края в Расширение Firefox в Расширение Opera

Табло результатов прибыло!

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

Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?

новости с техническими моментами

Примите участие

Помогите нам продолжать предоставлять ценные бесплатные инструменты

Купи мне кофе
Реклама · УДАЛИТЬ?