Ta odpowiedź wydaje się istotna, ponieważ PO odwołuje się do potrzeby rozwiązania obejmującego wiele systemów operacyjnych. Ten artykuł pomocy Github zawiera szczegółowe informacje na temat dostępnych metod obsługi zakończeń linii w różnych systemach operacyjnych. Istnieją podejścia globalne i per-repo do zarządzania zakończeniami linii między systemami operacyjnymi.
Globalne podejście
Skonfiguruj obsługę końcówek linii Git w systemie Linux lub OS X:
git config --global core.autocrlf input
Skonfiguruj obsługę końcówek linii Git w systemie Windows:
git config --global core.autocrlf true
Podejście per-repo:
W katalogu głównym repozytorium utwórz .gitattributes
plik i zdefiniuj ustawienia zakończenia linii dla plików projektu, po jednej linii na raz w następującym formacie: path_regex line-ending-settings
gdzie line-ending-settings
jest jednym z następujących:
- tekst
- binarne (pliki, dla których Git nie powinien modyfikować końcówek linii - ponieważ może to spowodować, że niektóre typy obrazów, takie jak PNG, nie będą renderowane w przeglądarce)
text
Wartość może być dodatkowo skonfigurowany pouczać Git na jak radzić końca linii dla plików pasujące:
text
- Zmienia zakończenia linii na natywne zakończenia linii systemu operacyjnego.
text eol=crlf
- Konwertuje zakończenia linii na CRLF
przy kasie.
text eol=lf
- Konwertuje zakończenia linii na LF
przy kasie.
text=auto
- Rozsądne ustawienie domyślne, które pozostawia obsługę linii w gestii Gita.
Oto zawartość przykładowego pliku .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
Więcej o tym, jak odświeżyć repozytorium po zmianie ustawień zakończeń linii tutaj . Tldr:
wykonaj kopię zapasową plików za pomocą Gita, usuń każdy plik w repozytorium (z wyjątkiem katalogu .git), a następnie przywróć wszystkie pliki naraz. Zapisz swoje bieżące pliki w Git, aby nic nie zostało utracone.
git add . -u
git commit -m "Saving files before refreshing line endings"
Usuń indeks i wymuś ponowne przeskanowanie katalogu roboczego przez Git.
rm .git/index
Przepisz indeks Git, aby zebrać wszystkie nowe zakończenia linii.
git reset
Pokaż przepisane, znormalizowane pliki.
W niektórych przypadkach to wszystko, co należy zrobić. Inni mogą potrzebować wykonać następujące dodatkowe kroki:
git status
Dodaj z powrotem wszystkie zmienione pliki i przygotuj je do zatwierdzenia. To Twoja szansa, aby sprawdzić, które pliki, jeśli w ogóle, pozostały niezmienione.
git add -u
Jest całkowicie bezpieczne, aby zobaczyć tutaj wiele wiadomości, które brzmią [s] "ostrzeżenie: CRLF zostanie zastąpiony przez LF w pliku."
Przepisz plik .gitattributes.
git add .gitattributes
Zatwierdź zmiany w swoim repozytorium.
git commit -m "Normalize all the line endings"