Страница справочника gitattributes плохо выложена. В следующем разделе вы найдете:
Переменная конфигурации core.eol
определяет, какие окончания строк будет использовать git для нормализованных файлов в вашем рабочем каталоге; по умолчанию используется исходное окончание строки для вашей платформы, или CRLF, если установлено core.autocrlf
.
Итак, если вы не укажете core.eol
, вы получите строки, оканчивающиеся символами CR + LF, независимо от того, используете ли вы Apple Mac OS X, Microsoft Windows или Ubuntu Linux.
Из вашего вопроса:
В первом предложении написано "если вы хотите иметь все crlf", тогда как во втором предложении говорится, что git будет автоматически корректировать конец строк.
Важно отметить, что есть два направления регулировки, которые выполняются, когда core.autocrlf
установлен на true
:
- CR + LFs станут LFs в вашем репозитории / репозиториях . То есть файлы коммитов и серверная часть репозитория будут иметь LF в конце строк в тексте. файлы. Это сохраняет последовательность в вашей истории коммитов, облегчая сравнения и сравнения, если один из IDE ваших коллег решит магически преобразовать ваши LF в CR + LF (кто хочет увидеть это в их diff?). Полагаю, вы сэкономите несколько байтов дискового пространства.
- LF станут CR + LF в вашем рабочем каталоге . В вашей извлеченной файловой системе любой новый текстовый файл будет иметь строки, заканчивающиеся на CR + LF, как только git коснется его. Это произойдет, даже если у файла были строки, оканчивающиеся на простые LF при первом его создании.
Первое, что вам нужно сделать, это сбросить core.autocrlf
или установить его на false
. Если вы хотите, чтобы извлеченные текстовые файлы соответствовали предпочитаемым ОС окончаниям строк, независимо от того, как они были созданы, просто добавьте это в свои .gitattributes:
* text=auto
В качестве альтернативы, если git не умеет угадывать, какие из ваших файлов являются текстовыми, вы можете объявить конкретное расширение, чтобы пройти эту двустороннюю нормализацию:
*.ext text
(где ext
- расширение файла, о котором идет речь)