2013-10-25 3 views
23

Механизм git diff видит, что весь файл изменился, когда он его не изменил. Например, возьмем это обязательство: https://github.com/etiago/phpvirtualbox/commit/626e09958384f479f94011ac3b8301bd497aec51git diff видит весь файл как измененный, когда он не

Здесь мы видим, что файл Библиотека/vboxconnector.php имеет 2807 дополнения и 2778 делеции. Кроме того, от выполнения ручного git diff я считаю, что действительно, весь файл берется как удаление (помечено минусом), а в качестве дополнения используется целый новый файл. Тем не менее, файлы имеют много общего, что Git просто игнорируется.

Я просмотрел diff returning entire file for identical files, но это не похоже на то, что между двумя коммитами не существует никаких изменений пробела.

Кроме того, взяв два фиксированных файла (один в 626e09958384f479f94011ac3b8301bd497aec51 и 626e09958384f479f94011ac3b8301bd497aec51^1) и разложив их с помощью Meld, я получаю правильный анализ diff.

Я загрузил два коммита файла в свой Dropbox для удобства: commit_1commit_2.

+0

http://stackoverflow.com/help/dont-ask. Вопросы, которые вы не должны задавать: * нет реальной проблемы, которую нужно решить: «Мне любопытно, если другие люди чувствуют, что я это делаю». * –

+0

Или ..... Это правильно, и вы переписали файл! –

ответ

43

В vboxconnector.php_1 каждая строка завершается CRLF Последовательность.

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

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

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

Вы также можете найти полезную информацию в the answers to this question.

Смежные вопросы