Ця відповідь здається актуальною, оскільки в ОП посилається на потребу в мульти ОС. У цій довідковій статті 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
- Розумний за замовчуванням, який залишає обробку рядків, на розсуд Гіта.
Ось вміст зразка .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"