Ответ 1
Персональная страница 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 станут LF в вашем репозитории/репозиториях. То есть, файлы фиксации и back-end репозитория будут иметь LF в конце строк в текстовых файлах. Это упрощает работу в вашей истории фиксации, облегчая сравнение различий/сравнений, если одна из IDE ваших коллег решит магически преобразовать ваши LF в CR + LF (кто хочет видеть это в своем diff?). Вы также сохраните несколько байтов на жестком диске.
- LFs станет CR + LFs в вашем рабочем каталоге. В вашей проверенной файловой системе любой новый текстовый файл будет иметь строки, заканчивающиеся на CR + LF, когда-то git коснется его. Это произойдет, даже если у файла были строки, заканчивающиеся на простые LF, когда вы его впервые создали.
Первое, что вам нужно сделать, это отключить core.autocrlf
или установить его на false
. Если вы хотите, чтобы проверенные текстовые файлы соответствовали конечным строкам, выбранным пользователем, независимо от того, как они были созданы, просто добавьте это в свои .gitattributes:
* text=auto
В качестве альтернативы, если git не полезно угадывать, какой из ваших файлов является текстом, вы можете объявить конкретное расширение для этой двухсторонней нормализации:
*.ext text
(где ext
- это расширение файла)