Jawaban ini tampaknya relevan karena OP mengacu pada kebutuhan solusi multi-OS. Artikel bantuan Github ini menjelaskan pendekatan yang tersedia untuk menangani garis akhiran lintas OS. Ada pendekatan global dan per repo untuk mengelola akhiran garis lintas-os.
Pendekatan global
Konfigurasikan penanganan ujung baris Git di Linux atau OS X:
git config --global core.autocrlf input
Konfigurasi penanganan ujung baris Git di Windows:
git config --global core.autocrlf true
Pendekatan per repo:
Di root repo Anda, buat .gitattributes
file dan tentukan setelan akhir baris untuk file proyek Anda, baris demi baris dalam format berikut: di path_regex line-ending-settings
mana line-ending-settings
salah satu dari berikut ini:
- teks
- binary (file yang tidak boleh diubah oleh Git di akhir baris - karena ini dapat menyebabkan beberapa jenis gambar seperti PNG tidak dirender di browser)
The text
nilai dapat dikonfigurasi lebih lanjut untuk menginstruksikan Git tentang bagaimana untuk menangani akhir baris untuk file yang cocok:
text
- Mengubah akhir baris ke akhir baris asli OS.
text eol=crlf
- Mengubah akhiran baris menjadi CRLF
saat checkout.
text eol=lf
- Mengubah akhiran baris menjadi LF
saat checkout.
text=auto
- Default yang masuk akal yang membiarkan pegangan garis tergantung pada kebijaksanaan Git.
Berikut adalah isi dari contoh file .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
Lebih lanjut tentang cara menyegarkan repo Anda setelah mengubah pengaturan akhir baris di sini . Tldr:
cadangkan file Anda dengan Git, hapus setiap file di repositori Anda (kecuali direktori .git), lalu pulihkan semua file sekaligus. Simpan file Anda saat ini di Git, agar tidak ada pekerjaan Anda yang hilang.
git add . -u
git commit -m "Saving files before refreshing line endings"
Hapus indeks dan paksa Git untuk memindai ulang direktori kerja.
rm .git/index
Tulis ulang indeks Git untuk mengambil semua akhir baris baru.
git reset
Tampilkan file yang ditulis ulang dan dinormalisasi.
Dalam beberapa kasus, hanya ini yang perlu dilakukan. Orang lain mungkin perlu menyelesaikan langkah tambahan berikut:
git status
Tambahkan kembali semua file yang diubah, dan persiapkan untuk komit. Ini adalah kesempatan Anda untuk memeriksa file mana, jika ada, yang tidak diubah.
git add -u
Sangat aman untuk melihat banyak pesan di sini yang bertuliskan "peringatan: CRLF akan diganti dengan LF dalam file."
Tulis ulang file .gitattributes.
git add .gitattributes
Lakukan perubahan ke repositori Anda.
git commit -m "Normalize all the line endings"