Git diff видит весь файл как измененный, когда он не
Механизм 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.
Ответы
Ответ 1
В vboxconnector.php_1
каждая строка заканчивается последовательностью CR
LF
.
В vboxconnector.php_2
каждая строка заканчивается просто LF
.
Таким образом, каждая строка файла изменилась.
Попробуйте использовать git diff --ignore-space-at-eol
.
Вы также можете найти полезную информацию в ответах на этот вопрос.