Как отключить git end-of-line (CRLF для LF) во всех клонах/машинах?

как можно почерпнуть С другое посты, нормализация конца строки Git имеет свои плюсы и минусы. У меня есть один конкретный проект только для Windows, где я думаю, что лучше всего сделать, это отключить нормализацию конца строки вообще. То есть, я хочу оставить все новые строки (большинство из которых CRLF) неповрежденным, а не иметь git нормализовать их до LF - только за кулисами, и я хочу, чтобы это изменение повлияло на все клоны репозитория на все машины. Вопрос в том, как это сделать.

большинство обсуждений нормализации git end-of-line с точки зрения core.autocrlf, и я мог бы достичь своей цели, установив core.autocrlf=false. Однако это параметр git-config, и я считаю, что его нужно устанавливать отдельно на каждой машине. Если true, это кажется ошибкой, особенно с msysgit установщик направляет один в настройку core.autocrlf=true.

1 ответов


лучший способ избежать необходимости установки core.autocrlf отдельно на каждой машине, кажется, проверке .gitattributes файл в репозиторий, содержащий одну строку

* -text

или, если у вас есть более старая версия Git, то

* -crlf

это говорит Git, что для всех путей (таким образом,*), нормализация конца строки не должна быть предпринята. Насколько я могу судить, это не должно иметь никаких других побочных эффектов. В частности, он не должен изменять то, как diffs сгенерировано (имеет отдельный атрибут diff/-diff) или как обрабатываются слияния (это имеет отдельный атрибут merge/-merge).

для более подробной информации, я предлагаю следующие ресурсы:

  1. документация gitattributes (git help attributes или копию), который подробно описывает, как работает нормализация конца строки и конкретные эффекты различных атрибутов. (Вероятно, наиболее релевантными являются text, crlf, diff, merge, и binary.)
  2. поток списка рассылки Git атрибут "text" означает только чтобы указать поведение нормализации конца строки или оно имеет более широкие последствия? (Mar 30, 2012), который расширяет значение различных атрибутов и разъясняет, что -text не означает просто "это двоичный файл".