Есть действительно разные алгоритмы сравнения. (И есть много возможных различий, которые приведут к точно таким же изменениям в файле - это одна из причин, почему это так разумно, что git не сохраняет изменения, он только сохраняет состояние дерева при каждом коммите :))
Даже в git для некоторых команд вы можете выбрать один из двух различных алгоритмов сравнения - например, попробуйте переместить функцию в некотором коде C и сравнить вывод:
git diff
... и:
git diff --patience
Последний обычно более читабелен, хотя и медленнее для вычисления.
Я не уверен, какой алгоритм использует opendiff, но, возможно, он похож на diff терпения ?
К сожалению, я не верю, что в git в настоящее время возможно использовать другой алгоритм сравнения в git add -p
, хотя я также считаю, что это очень полезно. Здесь есть серия патчей для добавления этой функции, но кажется, что автор еще не отправил эту апстрим.