Механизм git diff видит весь файл, который был изменен, когда он этого не сделал. Например, возьмите эту фиксацию: https://github.com/etiago/phpvirtualbox/commit/626e09958384f479f94011ac3b8301bd497aec51
Здесь мы видим, что файл lib/vboxconnector.php имеет 2807 дополнений и 2778 удалений. Кроме того, начиная с выполнения ручного git diff, я считаю, что весь файл берется как удаление (помечено минусом), а в качестве дополнения используется целый новый файл. Тем не менее, файлы имеют много общего, что git просто игнорируется.
Я просмотрел diff, возвращающий весь файл для идентичных файлов, но, похоже, это не так, поскольку между двумя коммитами не существует никаких изменений пробела.
Кроме того, беря две коммиты файла (тот, что в 626e09958384f479f94011ac3b8301bd497aec51
и 626e09958384f479f94011ac3b8301bd497aec51^1
) и разграничивает их с помощью Meld, я получаю правильный анализ diff.
Я загрузил две записи файла в мой Dropbox для удобства: commit_1 commit_2.