Алгоритм LCS (Longest Common Subsequence)
Находит наибольшую общую подпоследовательность двух файлов. Строки из LCS — неизменные. Всё что в A, но не в LCS — удалено (-). Всё что в B, но не в LCS — добавлено (+). Сложность O(m×n) по памяти и времени.
Myers Diff (GNU diff)
Реальный `diff` использует алгоритм Майерса (1986) — O((n+m)d), где d — количество изменений. Для файлов с малым числом изменений работает почти линейно. Git использует адаптацию Майерса с контекстом по умолчанию.
Unified format (-u)
Стандартный формат git diff и patch-файлов. Строки без префикса — контекст, - удалено, + добавлено. Заголовок @@ -a,b +c,d @@ означает: блок начинается со строки a в A (b строк) и со строки c в B (d строк).