Как отключить конец строки Git (от CRLF до LF) на всех клонах / машинах?

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

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


person Chris    schedule 29.03.2012    source источник


Ответы (1)


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

* -text

Или, если у вас более старая версия Git, тогда

* -crlf

Это сообщает Git, что для всех путей (таким образом, *) нормализация конца строки не должна выполняться. Насколько я могу судить, других побочных эффектов у этого быть не должно. В частности, он не должен изменять способ генерации различий (у этого есть отдельный атрибут _6 _ / _ 7_) или способ обработки слияний (у этого есть отдельный атрибут _8 _ / _ 9_).

Для получения дополнительной информации я предлагаю эти ресурсы:

  1. Документация gitattributes (git help attributes или онлайн-копия), в которой описывается подробно рассказывается как о том, как работает нормализация в конце строки, так и о конкретных эффектах различных атрибутов. (Вероятно, наиболее актуальными являются text, crlf, diff, merge и binary.)
  2. Тема списка рассылки Git Предназначен ли атрибут" text "только для указания поведения нормализации в конце строки, или он имеет более широкое значение ? (30 марта 2012 г.), который расширяет значение различных атрибутов и поясняет, что -text не означает просто «это двоичный файл».
person Chris    schedule 04.04.2012
comment
Ссылка в вашем посте мертва. Может, ты мог бы использовать это вместо этого? git.661346.n2.nabble.com/ - person Antimony; 20.08.2016
comment
С core.autocrlf=true (по умолчанию) Git не изменяет окончания строк при оформлении заказа? Что было раньше, даже если .gitattributes? (Сам .gitattributes будет иметь CRLF). Затем, при фиксации, Git получает указание не конвертировать CRLF (-text), чтобы в вашем репо остались CRLF? - person Michel Jung; 16.07.2018
comment
@MichelJung git может читать .gitattributes из локального репозитория после извлечения из удаленного репозитория, но до того, как файлы будут разрегистрированы. Локальный репозиторий должен совпадать с удаленным репозиторием по окончанию строки. Преобразования в конце строки выполняются только в момент извлечения файлов и их повторной фиксации. - person Jason; 02.09.2019