Satır sonlarıyla başa çıkma prosedürüm aşağıdaki gibidir (birçok depoda savaş test edildi):
Yeni bir repo oluştururken:
.gitattributesve diğer tipik dosyalarla birlikte ilk taahhüdü koymak .gitignoreveREADME.md
Mevcut bir repo ile uğraşırken:
- Buna
.gitattributesgöre oluştur / değiştir
git commit -a -m "Modified gitattributes"
git rm --cached -r . && git reset --hard && git commit -a -m 'Normalize CRLF' -n"
-n( --no-verifyön işleme kancalarını atlamaktır)
- Bunu bir takma ad olarak tanımlayabileceğim kadar sık yapmalıyım
alias fixCRLF="..."
- önceki komutu tekrarla
- evet, bu voodoo, ama genellikle komutu iki kez çalıştırmak zorundayım, ilk kez bazı dosyaları normalleştirdiğinde, ikinci kez daha fazla dosya. Genellikle yeni bir taahhüt oluşturulmadan tekrarlamak en iyisidir :)
- eski (normalizasyondan hemen önce) ve yeni dal arasında birkaç kez ileri geri gidin. Şubeyi değiştirdikten sonra, bazen git yeniden düzenlenmesi gereken daha fazla dosya bulur!
In .gitattributesben LF EOL sahip olarak açıkça tüm metin dosyaları beyan beri genel olarak, Windows kalıp Windows olmayan takım CRLF ile uyumlu değilken LF ile uyumludur (hatta birçok nodejs hat araçları LF varsayar ve dolayısıyla Dosyalarınızdaki EOL değiştirebilir komutu).
İçeriği .gitattributes
Benim .gitattributesgenellikle şöyle görünür:
*.html eol=lf
*.js eol=lf
*.json eol=lf
*.less eol=lf
*.md eol=lf
*.svg eol=lf
*.xml eol=lf
Geçerli repoda git tarafından hangi farklı uzantıların izlendiğini anlamak için buraya bakın
Normalizasyondan sonraki sorunlar
Bu yapıldıktan sonra, ortak bir uyarı daha var.
Diyelim ki masterzaten güncel ve normalleştirilmiş ve sonra ödeme outdated-branch. Bu dalı kontrol ettikten hemen sonra, git birçok dosyayı değiştirilmiş olarak işaretler.
Çözüm sahte bir taahhüt ( git add -A . && git commit -m 'fake commit') yapmak ve sonra git rebase master. Rebase'den sonra, sahte taahhüt ortadan kalkmalıdır.