Сравнение кода и файлов онлайн — разница построчно и внутри строки
Вставьте две версии кода или перетащите два файла — различия появятся сразу. Строки стоят друг напротив друга, правка внутри строки выделена отдельно, совпадающие участки свёрнуты. Результат можно сохранить как .patch для git apply. Сравнение работает на том же движке, что и в VS Code.
−0+0 Версии совпадают
Код сравнивается в браузере и никуда не отправляется.
Как найти различия в коде и прочитать результат
Сравнение идёт построчно, как в git diff, а внутри изменённых строк — по символам.
Красное удалено, зелёное добавлено
Слева — версия «Было», справа — «Стало». Удалённые строки отмечены красным, добавленные — зелёным. Если в строке поменялась только часть, например значение переменной, этот фрагмент выделен плотнее остальной строки. Подсветка синтаксиса сохраняется и на изменённых строках, поэтому код читается как в редакторе.
Два вида для разных задач
«Рядом» ставит одинаковые строки двух версий на одну высоту: на месте удалённого или добавленного блока появляется пустое место. Так удобно сверять длинные файлы. «Одной колонкой» показывает удалённые строки прямо над добавленными, как в код-ревью на GitHub. На телефоне версии добавляются по шагам — на вкладках «Было» и «Стало», а результат открывается на вкладке «Различия».
Видно только то, что изменилось
Вокруг каждой правки остаются по 3 строки контекста, остальной совпадающий код свёрнут в полосу «Скрытые строки». Щелчок по ней показывает скрытые строки. Если нужно видеть файл целиком, выключите «Сворачивать совпадения» в меню «Настройки».
От правки к правке без прокрутки
Стрелки под редактором переходят к следующему и предыдущему изменению, с клавиатуры — Alt+F5 и Shift+Alt+F5, как в VS Code. Счётчик показывает, на каком изменении вы находитесь, а числа − и + — сколько строк удалено и добавлено.
Пробелы, переносы строк и кодировки
Что считается отличием, а что нет, и как сравнить файлы из разных систем.
Когда включать «Игнорировать отступы»
Если блок кода обернули в условие или сменили табуляцию на пробелы, отступ меняется у каждой строки, хотя логика та же. С этой настройкой из меню «Настройки» пробелы и табуляция в начале и в конце строк не считаются изменением, и на виду остаются только настоящие правки. Пробелы внутри строки по-прежнему сравниваются. Патч при этом остаётся точным: отступы в нём сохранены.
Разные переносы строк — не отличие
Windows завершает строки символами CRLF, Linux и macOS — LF. Инструмент сравнивает содержимое строк, поэтому файл, сохранённый в Windows, и тот же файл из репозитория совпадут.
Кодировка файла определяется сама
Откройте файл кнопкой «Файл» в шапке панели или перетащите его на нужную панель. Два файла, брошенные вместе, встанут в «Было» и «Стало» по порядку. Инструмент читает UTF-8, Windows-1251 и UTF-16 с меткой BOM, поэтому кириллица из старых сайтов не превращается в «кракозябры». Язык подсветки выбирается по расширению. Размер одного файла — до 5 МБ, двоичные файлы вроде картинок и архивов не открываются.
Исправьте код прямо в сравнении
Обе панели редактируются, различия пересчитываются на ходу. Стрелка рядом с изменением возвращает в «Стало» отдельный блок из «Было» — удобно, когда из нескольких правок нужно оставить не все. Получившуюся версию можно скопировать или скачать файлом из меню «…» в шапке панели.
Любое действие — вставку, открытие файла, очистку, обмен версий — отменяет кнопка «Отменить» над панелями или Ctrl+Z.
Как создать и применить patch-файл
Патч — текстовый файл с различиями, который понимают git и утилита patch.
Unified diff с тремя строками контекста
«Копировать патч» и «Скачать .patch» сохраняют различия в формате unified diff — том же, что выдаёт git diff. Если код открыт из файла, в заголовках патча стоит его имя. Такой патч понимают git apply и утилита patch.
Команды для терминала
Положите патч в папку проекта, где лежит исходный файл, и выполните одну из команд. Первая только проверяет, что патч применится без конфликтов.
git apply --check changes.patch git apply changes.patch patch -p1 < changes.patch
Как сравнить два кода онлайн
Три шага для любого языка.
Добавьте две версии кода
Вставьте исходный код в панель «Было», изменённый — в «Стало». Можно открыть файлы кнопкой «Файл» или перетащить два файла сразу.
Посмотрите различия
Изменения подсвечиваются сразу, язык определяется автоматически. При необходимости выберите язык в списке, включите «Игнорировать отступы» в меню «Настройки» или вид «Одной колонкой».
Пройдите по правкам и сохраните патч
Переходите между изменениями стрелками или клавишами Alt+F5. Чтобы применить правки в проекте, скопируйте патч или скачайте файл .patch.
Частые вопросы о сравнении кода
О файлах, пробелах, языках и патчах.
Перетащите оба файла в редактор: первый встанет в «Было», второй в «Стало». Или откройте каждый кнопкой «Файл» в шапке своей панели. Различия появятся сразу, язык подсветки определится по расширению файла.
Нет. Сравнение и создание патча выполняются в вашем браузере. Редактор загружается с нашего сайта, код никуда не передаётся. Поэтому инструментом можно сравнивать закрытый рабочий код.
В меню «Настройки» включите «Игнорировать отступы». Тогда пробелы и табуляция в начале и в конце строк не считаются изменением. Пробелы внутри строки сравниваются всегда. Разные переносы строк CRLF и LF инструмент не считает отличием и без этой настройки.
HTML, CSS, SCSS, LESS, JavaScript, TypeScript, JSON, PHP, Python, SQL, XML, YAML, Markdown, Java, C#, C и C++, Go, Ruby, Shell и INI, включая .htaccess. Сравнивать можно любой текст: подсветка влияет только на вид, а не на поиск различий.
Положите файл .patch в папку проекта с исходным файлом и выполните git apply changes.patch. Без git подойдёт утилита patch: patch -p1 < changes.patch. Проверить патч без изменения файлов можно командой git apply --check changes.patch.
Инструмент сравнивает текст построчно, поэтому переставленные ключи будут видны как изменения. Если JSON записан в одну строку, сначала разверните его в JSON-форматтере: так различия будут видны по строкам, а не одной сплошной правкой.
Один файл — до 5 МБ. Файл на десятки тысяч строк с обычными правками сравнивается меньше чем за секунду. Дольше всего сравниваются полностью переписанные файлы: несколько тысяч строк без совпадений занимают несколько секунд, страница при этом не зависает.