Подтвердить что ты не робот

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.

4b9b3361

Ответ 1

В vboxconnector.php_1 каждая строка заканчивается последовательностью CR LF.

В vboxconnector.php_2 каждая строка заканчивается просто LF.

Таким образом, каждая строка файла изменилась.

Попробуйте использовать git diff --ignore-space-at-eol.

Вы также можете найти полезную информацию в ответах на этот вопрос.