Порівняння текстів (Diff Checker)

Порівнюйте два тексти або фрагменти коду рядок за рядком. Додані, видалені та змінені рядки підсвічуються аж до конкретних слів, що відрізняються.

Працює в браузеріБез реєстраціїНічого не завантажується

Вставте текст в обидва поля, щоб побачити відмінності.

Як користуватися: Порівняння текстів (Diff)

  1. Вставте початковий текст ліворуч, а змінений — праворуч, або відкрийте два файли.
  2. Порівняння оновлюється під час введення. Виберіть вигляд Поруч або Єдиний.
  3. Позначте Ігнорувати пробіли, Ігнорувати регістр або Ігнорувати порожні рядки, щоб приховати шум на кшталт зміни відступів.
  4. Скористайтеся Сховати незмінене, щоб зосередитися на змінах із трьома рядками контексту навколо кожної.
  5. Натисніть Копіювати як патч або Завантажити .diff, щоб отримати стандартний unified diff, який застосовується через git apply або patch.

Як працює порівняння

Інструмент розбиває обидва тексти на рядки й запускає алгоритм Маєрса — той самий алгоритм O(ND), що його використовують git diff і GNU diff. Він знаходить найкоротшу послідовність вставок і видалень, яка перетворює початковий текст на змінений, тому результат показує мінімально можливу кількість змінених рядків. Однакові рядки на початку й у кінці пропускаються заздалегідь, тож навіть файли на тисячі рядків порівнюються майже миттєво.

Коли видалений і доданий рядки стоять поруч, вони об'єднуються в змінений рядок і порівнюються ще раз за словами. Слова, що справді змінилися, підсвічуються яскравіше, тож перейменована змінна чи виправлене число одразу помітні навіть у довгому рядку.

Поруч чи єдиний вигляд

Вигляд Поруч показує оригінал ліворуч і нову версію праворуч із номерами рядків для обох. Це найзручніший вигляд для перевірки текстів, конфігів і невеликих змін коду. Єдиний вигляд чергує видалені (-) і додані (+) рядки в одній колонці — цей формат використовують інструменти код-рев'ю та патч-файли.

Формат unified diff (патч)

Експортований патч відповідає формату diff -u: заголовок ---/+++, далі блоки (hunks), що починаються з @@ -l,s +l,s @@, де l — номер першого рядка, а s — кількість рядків блоку в кожному файлі. Кожен блок містить три рядки незміненого контексту, тому його можна застосувати через patch -p0 або git apply, навіть якщо сусідні рядки змістилися.

Коли використовувати опції ігнорування

  • Ігнорувати пробіли вважає рядки однаковими, якщо вони відрізняються лише пробілами чи табуляцією. Корисно після зміни відступів або заміни табів на пробіли.
  • Ігнорувати регістр зручно для SQL, HTML і логів, де регістр не важливий.
  • Ігнорувати порожні рядки приховує рядки, додані чи видалені лише заради відступів.

Поширені запитання

Чи завантажується мій текст кудись?
Ні. Порівняння повністю виконується в браузері на JavaScript. Нічого зі вставленого не надсилається на сервер, тож можна спокійно порівнювати приватний код, договори чи конфіги.
Наскільки великими можуть бути тексти?
Файли на десятки тисяч рядків порівнюються на звичайному ноутбуці менш ніж за секунду. Оскільки складність алгоритму зростає з кількістю відмінностей, найдовше обробляються два величезні, повністю різні файли.
Чи можна порівняти два файли, не вставляючи текст?
Так. Скористайтеся кнопками Відкрити файл над кожним полем, щоб завантажити локальний файл. Файл читає браузер, і він нікуди не завантажується.
Чому рядок показано як видалений і доданий, а не змінений?
Рядки об'єднуються як «змінені», лише коли блок видалених рядків стоїть безпосередньо поруч із блоком доданих. Якщо два рядки мають дуже мало спільного тексту, підсвітка за словами пропускається, бо вона була б гаміркішою, ніж показ усього рядка як зміненого.
Як порівняти JSON-об'єкти?
Скористайтеся інструментом JSON Diff. Він порівнює розібрану структуру, тому порядок ключів і форматування не створюють хибних відмінностей, і показує точні шляхи змін.

Схожі інструменти