Иногда люди непреднамеренно меняют стиль эла при совершении кодов. Как позволить git остановить их от этого? Я искал эту тему и узнал, что большинство ответов сосредоточено на том, как превращать файлы в определенный стиль eol. Но я не хочу этого поведения. Я просто хочу, чтобы коммиттеры соответствовали стилю eol исходных файлов: \ n или \ r \ n. Может ли это сделать?Как разрешить git отказаться от изменения стиля eol?
ответ
Мне просто нужно заставить коммиттеров соответствовать оригинальному стилю, который автор выбрал. Иными словами, нельзя преобразовать \ n в \ r \ n или преобразовать \ r \ n в \ n. Но мне все равно, что оригинальный стиль eol
Если у вас есть core.autocrlf
set to false
, git не будет пытаться конвертировать ничего в любое время.
Но это также означает, что пользовательский редактор может изменить eol без Git, зная что-нибудь об этом: Git не запоминает eol во время проверки.
Это означает, что он проверит все, что было изменено пользователем (включая изменения eol).
Вы, , можете попробовать post-checkout
hook, который будет отвечать за запоминание этой информации для вас, но это кажется немного излишним.
Я предпочитаю регистрировать нормализацию для определенных типов файлов в файлах .gitattributes
, как иллюстрирует следующий раздел этого ответа.
Orginal Ответ, иллюстрирующий то, что Git может применять время фиксации:
Вы можете зарегистрировать EOL вы хотите (для определенных типов файлов) в .gitattributes
files с директивами Eol:
text
Этот атрибут включает и контролирует нормализацию конца строки.
Когда текстовый файл нормализуется, его окончания строки преобразуются в LF в репозитории.
Чтобы определить, какой стиль окончания строки используется в рабочем каталоге, использует атрибутeol
для одного файла и переменную конфигурацииcore.eol
для всех текстовых файлов.
eol
Этот атрибут задает определенный тип завершения строк, которые будут использоваться в рабочем каталоге.
Он обеспечивает нормализацию конца строки без каких-либо проверок содержимого, эффективно устанавливая текстовый атрибут.Набор для строкового значения «
crlf
»Этой настройка силы Git для нормализации конца строки для этого файла на оформленном и конвертировать их в
CRLF
когда файл извлечен.Набор для строкового значения «
lf
»Этой настройка силы Git нормализовать концы строк в
LF
на оформленном и предотвращает превращение вCRLF
когда файл извлечен.
Например:
*.sh eol=lf
Интерес к регистрации этих директив в файле .gitattributes
что он будет настойчив через репозиторий клонирования.
спасибо. Но я не хочу нормализации. Мне просто нужно заставить коммиттеров соответствовать оригинальному стилю, который автор выбрал. Иными словами, нельзя преобразовать \ n в \ r \ n или преобразовать \ r \ n в \ n. Но мне все равно, что такое оригинальный стиль eol. –
@AlvinCao Git не помнит, какой eol использовался в файле, когда коммиттер первоначально начал его изменять: он может только применять стиль для фиксации, и этот стиль не может быть «тем, что использовалось при проверке», потому что Git никогда не запоминает эту конкретную информацию в любом месте. – VonC
@AlvinCao Я отредактировал свой ответ, чтобы принять во внимание ваш комментарий. – VonC