Сравнение текстов: найти отличия
Compare two texts and see every added, removed and changed line. Всё выполняется локально — ничего не отправляется на сервер.
- Вход
- Two texts or files
- Выход
- Side-by-side · inline · unified diff
Исходный
9 строк
Изменённый
9 строк
Отличия
+0 добавлено · −0 удалено · ~4 изменено
Сравните тексты и увидьте, что именно изменилось
Вставьте исходный текст слева и изменённый справа или перетащите по файлу на каждую сторону, и этот инструмент сравнения выровняет их и отметит каждую добавленную, удалённую или изменённую строку. Внутри изменённой строки подсвечиваются отличающиеся слова или символы, так что перенесённая запятая или изменённое число не потеряются в длинном предложении. Сравнение целиком выполняется в вашем браузере, поэтому им можно безопасно пользоваться для договоров, конфигурационных файлов и кода, который не хочется вставлять на чужой сервер.
Как сравнить два текста
- Вставьте исходный текст в левое поле, а изменённый — в правое или перетащите текстовый файл на любое из полей.
- Смотрите результат ниже: удалённые строки красные, добавленные зелёные, а изменённые слова внутри строки подсвечены.
- Переключайтесь между видами бок о бок и единым и игнорируйте пробелы, регистр букв или пустые строки, если они не важны.
- Переходите от одного изменения к следующему стрелками.
- Скопируйте или скачайте отличия в виде стандартного файла
.patch, чтобы применить его черезgit applyилиpatch.
Как работает сравнение
Тексты сравниваются построчно алгоритмом Майерса — тем же, что лежит в основе git diff и GNU diff. Он находит самый короткий список вставок и удалений, превращающий один текст в другой, что равносильно поиску самой длинной общей последовательности строк. Отредактированные строки выглядят как удаление, за которым следует добавление; инструмент объединяет их в пары и внутри каждой пары выполняет второе, более точное сравнение — по словам или по символам, — чтобы подсветить только изменившуюся часть.
Неизменённые участки сворачиваются, а вокруг каждого изменения остаются три строки контекста, как в код-ревью. Щёлкните по свёрнутому участку, чтобы раскрыть его, или отключите сворачивание, чтобы видеть оба текста целиком. Очень большие или почти полностью разные тексты всё равно сравниваются быстро: после определённого объёма работы инструмент показывает оставшуюся область одним блоком изменений, а не ищет минимально возможный diff, и сообщает об этом над результатом.
Игнорирование пробелов, регистра и пустых строк
- Игнорировать пробелы
- Строки, отличающиеся только пробелами, табуляцией или отступами, считаются одинаковыми, как в git diff -w. Полезно после переформатирования кода или изменения переносов в тексте.
- Игнорировать регистр
- Заглавные и строчные буквы считаются одинаковыми, поэтому заголовок, переписанный из Title Case в Sentence case, не отмечается.
- Игнорировать пустые строки
- Изменения, которые только добавляют или удаляют пустые строки, показываются серым и не попадают в счётчики и патч.
- Слова или символы
- Выберите, насколько подробно подсвечивать изменённые строки: целые слова удобны для обычного текста, отдельные символы — для кода, идентификаторов и чисел.
Вид бок о бок или единый
Вид бок о бок показывает исходный и изменённый текст в двух колонках с собственной нумерацией строк, выровненных так, что изменённая строка стоит рядом со своей новой версией. Это самый удобный вид для обычного текста и длинных строк. Единый вид показывает одну колонку, где удалённые строки помечены -, а добавленные +, ровно так, как их показывают файл патча или pull request; он лучше подходит для узкого экрана.
Счётчики над результатом показывают добавленные, удалённые и изменённые строки. Изменённая строка отредактирована на месте; у удалённой строки нет соответствия в новом тексте.
Номера строк с обеих сторон относятся к текстам ровно в том виде, в каком вы их вставили, так что любое изменение легко найти в своём редакторе. Стрелки над результатом проходят по изменениям по порядку и центрируют каждое; счётчик показывает, на каком изменении вы находитесь.
Файлы патчей и другие форматы
Скачивается unified diff: заголовки --- и +++ с именами двух файлов, затем блоки @@ с тремя строками контекста — формат, который читают git apply, patch -p1 и любые инструменты код-ревью. Отсутствующий перевод строки в конце файла отмечается стандартным способом, так что применение патча к исходному тексту в точности воспроизводит изменённый.
Для JSON построчное сравнение часто не подходит: переставленные ключи или файл с другими отступами выглядят как сплошные изменения. Инструмент JSON diff сравнивает структуру и игнорирует порядок ключей и форматирование. Чтобы посчитать слова в любой из версий, используйте счётчик слов.
Часто задаваемые вопросы
- Как сравнить два текста и найти отличия?
- Вставьте исходный текст в левое поле, а новую версию — в правое. Отличия сразу появятся ниже: удалённые строки красным, добавленные зелёным, изменённые слова подсвечены.
- Можно ли сравнить два файла?
- Да. Перетащите текстовый файл на каждое поле или вставьте их содержимое. Подходит любой текстовый файл, включая код, CSV, Markdown, логи и конфигурационные файлы.
- Как не учитывать различия в пробелах?
- Включите «Игнорировать пробелы». Тогда строки, отличающиеся только пробелами, табуляцией или отступами, считаются одинаковыми, как в git diff -w.
- Что такое unified diff?
- Unified diff перечисляет изменения блоками, начинающимися с @@: удалённые строки помечены минусом, добавленные плюсом, а вокруг остаётся несколько неизменённых строк контекста. Этот формат используют git и команда patch.
- Как создать файл патча из двух текстов?
- Сравните тексты и нажмите кнопку скачивания, чтобы сохранить файл .patch в формате unified. Примените его к исходнику через git apply или patch -p1.
- Есть ли ограничение по размеру?
- Фиксированного ограничения нет. Файлы в десятки тысяч строк сравниваются за доли секунды. Для очень больших или совершенно разных текстов подсветка слов отключается, а изменения могут объединяться в более крупные блоки ради скорости.
- Загружается ли сравниваемый текст куда-либо?
- Нет. Сравнение выполняется в вашем браузере, на сервер ничего не отправляется, поэтому можно спокойно сравнивать личные документы и код.