Какие изменения git diff
отображаются в файле? В Windows я видел проблемы с окончанием строк, вызывающие подобные проблемы. В этом случае посмотрите, какие настройки у вас есть, git config core.autocrlf
иgit config core.safecrlf
. Здесь есть некоторая документация по этим настройкам .
Я бы сказал, если вы используете git svn
для интеграции с Subversion, убедитесь, что autocrlf
он выключен. Насколько я могу судить, в этой конфигурации он просто сломан, и это заставляет большинство инструментов думать, что файлы были изменены, когда вы сделали, checkout
чтобы отменить любые изменения.
Если вы видите проблему там, где это есть git checkout
, а затем git status
показывает, что файл все еще изменен, иgit diff
показывает, что файл изменен в каждой строке файла, то это проблема, которую вы наблюдаете.
core.autocrlf
Если true, заставляет git преобразовывать CRLF в конце строк в текстовых файлах в LF при чтении из файловой системы и преобразовывать в обратном порядке при записи в файловую систему. Переменная может быть установлена на ввод, и в этом случае преобразование происходит только при чтении из файловой системы, но файлы записываются с LF в конце строк. В настоящее время решение о том, какие пути считать «текстовыми» (т.е. подвергнуться механизму autocrlf), определяется исключительно на основе содержимого.
core.safecrlf
Если true, заставляет git проверять, является ли преобразование CRLF под управлением core.autocrlf обратимым. Git проверит, изменяет ли команда файл в рабочем дереве прямо или косвенно. Например, фиксация файла с последующим извлечением того же файла должна привести к появлению исходного файла в дереве работы. Если это не так для текущей настройки core.autocrlf, git отклонит файл. Переменной можно присвоить значение «предупреждать», и в этом случае git будет предупреждать только о необратимом преобразовании, но продолжит операцию. ...
git checkout HEAD -- index.htm
Работает ли (извлечение из последнего зафиксированного состояния вместо извлечения из индекса)?