.gitattributes и окончания строк CRLF и LF

Рейтинг: 1Ответов: 1Опубликовано: 05.06.2023

Есть репозиторий, требуется хранить файлы с текстами в формате с переводом строки CRLF.
Для этого в репо был добавлен файл .gitattributes вот с таким содержимым:

# all text files must be with CRLF EOLs. If not, they will be autoconverted into this state.
* text eol=crlf

При загрузке в репо и клонировании в новый каталог - всё как надо.
А вот если после этого выполнить pull, то при проверке изменений все файлы отображаются как изменённые.
При этом оконная утилита сравнения файлов из TortoiseGit показывает, что нет изменений. Но она умеет корректно показывать отличия в окончаниях строк, это я отдельно проверял.
А консольная утилита git diff -- показывает, что изменения почти во всех файлах во всех строках. Диалог TortoiseGit'а CheckForModifications показывает то же самое (количество lines added примерно равно количеству строк в файле).
Если удалить в рабочей копии файл .gitattributes, то количество "изменённых" файлов колоссально уменьшается.

Буду рад советам как исправить проблему, связанную с механизмом сравнения.

UPD: Видимо проблема была в том, что добавление .gitattributes было сделано локально, т.е. изменения не запушены в удалённый репо. Т.е. теперь такой проблемы нет от слова ВООБЩЕ.

Ответы

▲ 1

Тот бардак с переводами строк, что у вас есть сейчас, это стандарт использования гита на винде (в рабочей папке CRLF, в репе - LF).

Если любите сравнивать файлы не в отдельной гуёвой программе, а прямо в консоли, вызывайте

git diff --ignore-cr-at-eol