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:
.gitattributes
ve diğer tipik dosyalarla birlikte ilk taahhüdü koymak .gitignore
veREADME.md
Mevcut bir repo ile uğraşırken:
- Buna
.gitattributes
gö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 .gitattributes
ben 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 .gitattributes
genellikle şö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 master
zaten 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.