OP, çoklu işletim sistemi çözümüne yönelik bir ihtiyaca atıfta bulunduğundan, bu cevap alakalı görünmektedir. Bu Github yardım makalesi, işletim sistemleri arası satır sonlarını ele almak için mevcut yaklaşımları ayrıntılarıyla anlatmaktadır . İşletim sistemleri arası satır sonlarını yönetmek için global ve repo başına yaklaşımlar vardır.
Küresel yaklaşım
Linux veya OS X'te Git satır sonları işlemeyi yapılandırın:
git config --global core.autocrlf input
Windows'ta Git satır sonları işlemeyi yapılandırın:
git config --global core.autocrlf true
Repo başına yaklaşım:
Deponuzun kökünde, bir .gitattributes
dosya oluşturun ve proje dosyalarınız için satır sonlandırma ayarlarını, aşağıdaki formatta birer birer birer birer tanımlayın: path_regex line-ending-settings
burada line-ending-settings
aşağıdakilerden biri:
- Metin
- ikili (Git'in satır sonlarını değiştirmemesi gereken dosyalar - çünkü bu, PNG'ler gibi bazı görüntü türlerinin tarayıcıda oluşturulmamasına neden olabilir)
text
Değer eşleme dosyaları için satır sonları nasıl ele alınacağı üzerinde Git talimat daha da yapılandırılabilir:
text
- Satır sonlarını işletim sistemi yerel satır sonlarına değiştirir.
text eol=crlf
- CRLF
Ödeme sırasında satır sonlarını dönüştürür .
text eol=lf
- LF
Ödeme sırasında satır sonlarını dönüştürür .
text=auto
- Satır kontrolünü Git'in takdirine bırakan mantıklı varsayılan.
Örnek bir .gitattributes dosyasının içeriği:
# 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
Satır sonu ayarlarını değiştirdikten sonra deponuzu nasıl yenileyeceğiniz hakkında daha fazla bilgiyi burada bulabilirsiniz . Tldr:
dosyalarınızı Git ile yedekleyin, deponuzdaki her dosyayı silin (.git dizini hariç) ve ardından dosyaları tek seferde geri yükleyin. Mevcut dosyalarınızı Git'e kaydedin, böylece çalışmalarınızın hiçbiri kaybolmaz.
git add . -u
git commit -m "Saving files before refreshing line endings"
Dizini kaldırın ve Git'i çalışma dizinini yeniden taramaya zorlayın.
rm .git/index
Tüm yeni satır sonlarını almak için Git dizinini yeniden yazın.
git reset
Yeniden yazılmış, normalleştirilmiş dosyaları gösterin.
Bazı durumlarda, yapılması gereken budur. Diğerlerinin aşağıdaki ek adımları tamamlaması gerekebilir:
git status
Değiştirilen tüm dosyalarınızı geri ekleyin ve onları bir işleme için hazırlayın. Bu, varsa, hangi dosyaların değişmediğini inceleme şansınızdır.
git add -u
Burada [s] yazan birçok mesajı görmek tamamen güvenlidir "uyarı: dosyada CRLF LF ile değiştirilecektir."
.Gitattributes dosyasını yeniden yazın.
git add .gitattributes
Değişiklikleri deponuza işleyin.
git commit -m "Normalize all the line endings"