Текстовый Diff/ Построчно
Построчное выделение различий между двумя текстами. Поддержка кода и обычного текста с настраиваемым количеством контекстных строк. Полностью локально.
ОригиналA
ИзмененоB
Контекст
Diff
Вставьте текст в обе панели выше.
Этот инструмент решил вашу проблему?
Что такое инструмент текстового diff
Инструмент текстового diff использует алгоритм LCS (наибольшая общая подпоследовательность) для построчного сравнения двух текстов, выявляя добавления, удаления и изменения.
Распространённые сценарии использования diff
Ревью кода: сравнение изменений кода. Управление конфигурацией: сравнение конфигураций между средами. Совместная работа с документами: просмотр истории правок. Миграция данных: проверка точности преобразования данных.
Примеры кода
JavaScript (jsdiff)
import { diffLines } from 'diff';
const a = 'foo\nbar\nbaz';
const b = 'foo\nqux\nbaz';
diffLines(a, b).forEach(part => {
const sign = part.added ? '+' :
part.removed ? '-' : ' ';
process.stdout.write(sign + part.value);
});Python
import difflib
a = ['foo\n', 'bar\n', 'baz\n']
b = ['foo\n', 'qux\n', 'baz\n']
# Unified diff (like git diff)
diff = difflib.unified_diff(
a, b,
fromfile='original',
tofile='modified',
n=3, # context lines
)
print(''.join(diff))Go
// github.com/sergi/go-diff
import (
dmp "github.com/sergi/go-diff/
diffmatchpatch"
)
d := dmp.New()
diffs := d.DiffMain(textA, textB, false)
patch := d.PatchMake(textA, diffs)
fmt.Println(d.PatchToText(patch))Shell / CLI
# Unified diff with 3 context lines diff -U 3 original.txt modified.txt # Git-style diff (no git repo needed) git diff --no-index \ original.txt modified.txt # Side-by-side view diff --side-by-side \ original.txt modified.txt
Часто задаваемые вопросы
Как работает алгоритм diff?
Инструмент использует алгоритм LCS (наибольшая общая подпоследовательность) для построчного сравнения текстов, находя минимальный набор добавлений и удалений — аналогично алгоритму git diff.
Для чего нужны контекстные строки?
Контекстные строки определяют, сколько неизменённых строк показывать вокруг каждого изменённого участка. 0 — только изменённые строки; 3 — по 3 строки до и после каждого изменения; 'Все' — полный текст.
Какие типы текста поддерживаются?
Поддерживается любой обычный текст, включая код (JavaScript, Python, Go и т.д.), файлы конфигурации (JSON, YAML, TOML), документы Markdown и файлы журналов.
Отправляется ли мой контент на сервер?
Нет. Вся обработка происходит полностью в браузере. Ваш контент не покидает устройство, что безопасно для сравнения конфиденциального кода.
Как скопировать результат diff?
Нажмите кнопку 'Копировать' в правом верхнем углу панели diff, чтобы скопировать унифицированный текст diff в буфер обмена.
Что делает кнопка Поменять?
Поменять A↔B меняет панели местами, позволяя просматривать diff в обратном направлении.