Intereting Posts

Как разрешить git отказаться от изменения стиля eol?

Иногда люди непреднамеренно меняют стиль эла при совершении кодов. Как позволить git остановить их от этого? Я искал эту тему и узнал, что большинство ответов сосредоточено на том, как превращать файлы в определенный стиль eol. Но я не хочу этого поведения. Я просто хочу, чтобы коммиттеры соответствовали стилю eol исходных файлов: \ n или \ r \ n. Может ли это сделать?

Мне просто нужно заставить коммиттеров соответствовать оригинальному стилю, который автор выбрал. Иными словами, нельзя преобразовать \ n в \ r \ n или преобразовать \ r \ n в \ n. Но мне все равно, что оригинальный стиль eol

Если у вас установлено значение core.autocrlf , git не будет пытаться конвертировать что-либо в любое время.

Но это также означает, что пользовательский редактор может изменить eol без Git, зная что-нибудь об этом: Git не запоминает eol во время проверки.
Это означает, что он проверит все, что было изменено пользователем (включая изменения eol).

Вы можете попробовать крюк post-checkout который будет отвечать за запоминание этой информации для вас, но это кажется немного излишним.
Я предпочитаю регистрировать нормализацию для определенных типов файлов в файлах .gitattributes , как иллюстрирует следующий раздел этого ответа.


Orginal Answer, иллюстрирующий, что Git может обеспечить соблюдение в момент фиксации:

Вы можете зарегистрировать .gitattributes (для определенных типов файлов) в файлах .gitattributes , с eol-директивами:

 text 

Этот атрибут включает и контролирует нормализацию конца строки.
Когда текстовый файл нормализуется, его окончания строки преобразуются в LF в репозитории.
Чтобы определить, какой стиль окончания строки используется в рабочем каталоге, используйте атрибут core.eol для одного файла и core.eol конфигурации core.eol для всех текстовых файлов .

 eol 

Этот атрибут устанавливает определенный стиль окончания строки, который будет использоваться в рабочем каталоге.
Он обеспечивает нормализацию конца строки без проверки содержимого, эффективно устанавливая текстовый атрибут.

Установите значение строки " crlf "

Этот параметр заставляет Git нормализовать окончание строк для этого файла при проверке и преобразовать их в CRLF когда файл выгружен.

Установите значение строки " lf "

Этот параметр заставляет Git нормализовать окончания строки в LF на checkin и предотвращает преобразование в CRLF при извлечении файла.

Например:

 *.sh eol=lf 

Интерес к регистрации этих директив в файле .gitattributes заключается в том, что он будет постоянным при клонировании репозитория .