Загрузка...
Загрузка...
Руководство по сравнению текстов, кода и конфигураций: diff-алгоритмы, инструменты, форматы вывода и практические сценарии для разработчиков.
Как и зачем конвертировать регистр текста: camelCase, snake_case, kebab-case, PascalCase, UPPER CASE. Правила, примеры и онлайн-инструмент.
РазработкаВсё о UUID v4: формат, версии, генерация в JavaScript, Python, SQL. Когда использовать UUID вместо автоинкремента в базах данных.
РазработкаИсчерпывающее руководство по синтаксису Markdown: заголовки, списки, таблицы, код, ссылки. Справочник для разработчиков и авторов документации.
РазработкаПодробное руководство по онлайн-тестированию PHP: инструменты, ограничения, безопасность и практические сценарии использования. Сравнение с локальной разработкой.
Поделитесь с коллегами или изучите другие материалы блога
Сравнение текстов и кода — базовая операция в разработке: code review, слияние веток, аудит конфигураций, проверка договоров. В этой статье рассмотрим алгоритмы, инструменты и практические методы сравнения.
Для быстрого сравнения двух текстов или фрагментов кода используйте Diff Checker на rechecker.ru.
| Сценарий | Описание |
|---|---|
| Code review | Поиск изменений между коммитами |
| Слияние веток | Разрешение конфликтов при merge |
| Аудит конфигураций | Сравнение dev и prod настроек |
| Документы | Сравнение версий договоров |
| Локализация | Проверка переводов |
| Плагины/темы | Поиск изменений после обновления |
Классический алгоритм находит наибольшую общую подпоследовательность. Сложность O(n*m), где n и m — длины строк.
Файл A: ABCDEF
Файл B: ACDEFG
LCS: ACDEF
Оптимизированный алгоритм, используемый в Git. Минимизирует количество изменений в выводе. Сложность O(ND), где N — сумма длин, D — размер diff.
Вариант для кода: сначала сопоставляет уникальные строки, затем заполняет остальное. Даёт более читаемые diff для рефакторинга.
--- file1.txt
+++ file2.txt
@@ -1,4 +1,4 @@
-старая строка
+новая строка
без изменений
без изменений
| Символ | Значение |
|---|---|
| Без изменений (контекст) |
- | Удалено |
+ | Добавлено |
! | Изменено (в некоторых форматах) |
*** file1.txt
--- file2.txt
***************
*** 1,4 ****
- старый текст
общий контекст
--- 1,4 ----
+ новый текст
общий контекст
diff file1.txt file2.txt
diff -u file1.txt file2.txt # unified
diff -r dir1/ dir2/ # рекурсивно
diff -w file1 file2 # игнорировать пробелы
git diff HEAD~1 # последний коммит
git diff branch1 branch2 # между ветками
git diff --word-diff # по словам
git diff --stat # статистика
colordiff file1 file2 # цветной вывод
Онлайн diff-сервисы удобны для:
Diff Checker rechecker.ru поддерживает сравнение текста и кода с подсветкой синтаксиса и посимвольным режимом.
Каждая строка — единица сравнения. Подходит для кода и структурированного текста.
Было: "старый текст"
Стало: "новый текст"
Diff: "старый" -> "новый" (остальное без изменений)
Используется для коротких строк, паролей, хешей. Показывает точные различия.
diff -u /etc/nginx/sites-available/default /etc/nginx/sites-available/backup
diff <(jq -S . file1.json) <(jq -S . file2.json)
Сортировка ключей (jq -S) убирает влияние порядка полей.
diff -w file1 file2 # все пробелы
diff -B file1 file2 # пустые строки
diff -b file1 file2 # пробелы в конце строк
Сравнение файлов входит в пайплайны сборки:
# Пример: проверка изменений конфигурации
- name: Compare configs
run: |
diff -u config.prod.yaml config.staging.yaml || true
# Git diff в отчёте
- name: Generate diff report
run: git diff HEAD~1 --stat > diff-report.txt
Для слияния изменений из нескольких веток используется трёхстороннее сравнение (3-way merge). Инструменты: diff3, meld, kdiff3, встроенные в Git.
diff3 ours.txt base.txt theirs.txt
| IDE | Горячие клавиши | Функция |
|---|---|---|
| VS Code | Ctrl+Shift+P → "Compare" | Сравнение двух файлов |
| PhpStorm | Ctrl+D на файле | Compare with... |
| Sublime | Ctrl+Shift+P | File: Compare |
| Vim | :diffthis | Режим сравнения |
Для регулярного сравнения конфигов, логов и фрагментов кода Diff Checker на rechecker.ru даёт быстрый результат без установки дополнительного ПО.