Git diff не имеет никакого смысла

Когда я бегу git diff в PHP-файле, который я изменил, он показывает, что изменялась неправильная строка, а остальные строки «не изменены» (без изменений), даже если я изменил другие строки.

Пример:
результат git diff

Это изменение, которое я внес в документ:
введите описание изображения здесь

Это происходит только в определенных файлах и в других случаях, иногда добавляет другие строки, но не помечает соответствующие удаления строк. В других случаях он просто добавляет изменения в конец файла, не отмечая его как дополнение.

На SourceTree кажется, что тот же diff не имеет никакого смысла:
введите описание изображения здесь

К вашему сведению: файлы изначально были загружены с сервера Linux.

1

Решение

иногда это происходит, когда ваш файл кодируется новой строкой Windows, в git он кодируется новой строкой unix, поэтому вы получаете эту ошибку, вам нужно настроить окончание строки на unix

РЕДАКТИРОВАТЬ :

эта ссылка Вот может быть полезным. Как он сказал в этом посте, вы можете попробовать, зависит от вашего редактора:

  • Для пользователей Vim все готово к работе! Просто не меняй свой
    настройка eol. Для пользователей Emacs добавьте (setq require-final-newline t) в
    Ваш файл .emacs или .emacs.d / init.el.

    • Для пользователей TextMate вы можете установить Avian Missing Bundle и добавить TM_STRIP_WHITESPACE_ON_SAVE = true в свой файл .tm_properties.
  • Для возвышенных пользователей установите для параметра sure_newline_at_eof_on_save значение true.
  • Для RubyMine установите «Обеспечить перевод строки в конце файла при сохранении» в «Редакторе».
0

Другие решения

Я нашел решение, осмотрев оскорбительные файлы.

Кажется, что файлы, которые давали проблемы, имели классический Macintosh CR формат только конца строки (EOL). Сравните это с окнами CR+LF или UNIX (и производные, включая OS X) LF, Преобразование файла в формат Windows / UNIX EOL, фиксация исправленных файлов EOL устранила проблему.

Тестирование с помощью тестового репозитория Git подтвердило мои подозрения.

Может случиться так, что Git отслеживает изменения файлов, поддерживая только CR в комбинации с LF (CR+LF) и не CR один (как то, что использует классический Mac).

0