git add выдает предупреждение CRLF будет заменен на LF в ‹file-name›

Я недавно начал работать над кроссплатформенной разработкой Xamarin. В то время как некоторые разработчики в моей команде используют Mac для разработки (с Visual Studio для Mac), другие используют Windows (с Visual Studio 2017). Мы используем git / github в качестве нашего репозитория кода / системы контроля версий.

После того, как я внес некоторые изменения и добавил несколько новых файлов, я выпустил git add ., чтобы обработать все мои изменения, но я получил такие предупреждения

warning: CRLF will be replaced by LF in <file-name>.
The file will have its original line endings in your working directory

Я проверил свою конфигурацию git и core.autocrlf=input, что, насколько я понимаю, и согласно документации здесь https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration, правильная настройка для Mac.

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

Я прочитал множество сообщений об этой проблеме, но ни одного шва, чтобы четко объяснить, можно или нельзя игнорировать эти предупреждения. Или, если их нужно исправить, и как их исправить для команд, которые используют как Windows, так и MacOS, как моя команда.

Нужно ли мне беспокоиться об этом предупреждении и что оно означает для таких команд, как моя, работающих на компьютерах с Windows и MacOS?


person cd491415    schedule 13.11.2018    source источник


Ответы (1)


Я все равно рекомендую:

git config core.autocrlf false
git add --renormalize .
git commit -m "Do not touch eol"

По возможности избегайте внесения Git каких-либо изменений в ваш eol и работайте с редакторами, которые уважают eol редактируемого файла.

person VonC    schedule 14.11.2018
comment
Не могли бы вы немного уточнить? Почему бы не изменить, если вы работаете на Mac, а другие - в Windows? и т.д? Спасибо - person cd491415; 14.11.2018
comment
@ cd491415 Потому что и Mac, и Windows могут работать с одними и теми же файлами в \ n eol (\ r \ n не требуется), поэтому Git не нужно ничего трогать. - person VonC; 14.11.2018
comment
согласно хитовой документации git-scm.com/book/en/ v2 / Customizing-Git-Git-Configuration, вы не должны использовать false в кросс-платформенных командах. - person cd491415; 14.11.2018
comment
@ cd491415 Этот документ старый и сейчас неточный, даже устаревший. Здесь даже не упоминается core.safecrlf (git-scm.com/ docs / git-config # git-config-coresafecrlf). Как я уже говорил последние 8 лет (stackoverflow.com/a/2016763/6309, stackoverflow.com/a/2825829/6309), eol следует управлять с помощью директивы .gitattributes core.eol, а не всеобъемлющего core.autocrlf, который меняет все. - person VonC; 14.11.2018
comment
@ cd491415 Я не заметил ваших изменений в вашем вопросе, но вы ссылаетесь на устаревшую документацию. - person VonC; 14.11.2018