Как отключить конец строки Git (CRLF to LF) во всех клонах / машинах? - PullRequest
63 голосов
/ 30 марта 2012

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

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

1 Ответ

108 голосов
/ 04 апреля 2012

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

* -text

Или, если у вас более старая версиязатем версия Git

* -crlf

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

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

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