Этот ответ кажется актуальным, поскольку OP ссылается на необходимость решения для нескольких ОС. В этой статье справки Github подробно описаны доступные подходы к обработке окончаний строк в разных ОС. Существуют глобальные подходы и подходы для отдельных репо к управлению окончаниями строк между операционными системами.
Глобальный подход
Настройте обработку окончаний строк Git в Linux или OS X:
git config --global core.autocrlf input
Настройте обработку окончаний строк Git в Windows:
git config --global core.autocrlf true
Подход на основе репо:
В корне репозитория создайте .gitattributes
файл и определите параметры окончания строки для файлов проекта, по одной строке за раз в следующем формате: path_regex line-ending-settings
где line-ending-settings
одно из следующих значений:
- текст
- двоичный (файлы, для которых Git не должен изменять окончания строк - это может привести к тому, что некоторые типы изображений, такие как PNG, не будут отображаться в браузере)
Это text
значение можно настроить дополнительно, чтобы указать Git, как обрабатывать окончания строк для совпадающих файлов:
text
- Изменяет окончание строки на окончание строки ОС.
text eol=crlf
- Преобразует окончания строк в CRLF
при оформлении заказа.
text eol=lf
- Преобразует окончания строк в LF
при оформлении заказа.
text=auto
- Разумное значение по умолчанию, оставляющее обработку строки на усмотрение Git.
Вот содержимое образца файла .gitattributes:
# Set the default behavior for all files.
* text=auto
# Normalized and converts to
# native line endings on checkout.
*.c text
*.h text
# Convert to CRLF line endings on checkout.
*.sln text eol=crlf
# Convert to LF line endings on checkout.
*.sh text eol=lf
# Binary files.
*.png binary
*.jpg binary
Подробнее о том, как обновить репо после изменения настроек окончания строк, можно здесь . Tldr:
сделайте резервную копию ваших файлов с помощью Git, удалите все файлы в вашем репозитории (кроме каталога .git), а затем восстановите все файлы сразу. Сохраните ваши текущие файлы в Git, чтобы ваша работа не была потеряна.
git add . -u
git commit -m "Saving files before refreshing line endings"
Удалите индекс и заставьте Git повторно просканировать рабочий каталог.
rm .git/index
Перепишите индекс Git, чтобы учесть все новые окончания строк.
git reset
Покажите перезаписанные нормализованные файлы.
В некоторых случаях это все, что нужно сделать. Другим может потребоваться выполнить следующие дополнительные шаги:
git status
Верните все измененные файлы и подготовьте их к фиксации. Это ваш шанс проверить, какие файлы, если таковые имеются, остались неизменными.
git add -u
Совершенно безопасно увидеть здесь множество сообщений, которые читают [s] «предупреждение: CRLF будет заменен на LF в файле».
Перепишите файл .gitattributes.
git add .gitattributes
Зафиксируйте изменения в своем репозитории.
git commit -m "Normalize all the line endings"