git son zamanlarda utf16 gibi kodlamaları anlamaya başladı. Gitattributes dokümanı görün ,working-tree-encoding
[Bu oldukça yeni olduğu için man sayfanızın eşleştiğinden emin olun!]
(Diyelim) dosyası Windows makinesinde BOM olmadan UTF-16 ise daha sonra eklemek .gitattributes
dosyası
*.vmc text working-tree-encoding=UTF-16LE eol=CRLF
* Nix'de UTF-16 (bomlu) yapıyorsanız:
*.vmc text working-tree-encoding=UTF-16-BOM eol=LF
(Değiştir *.vmc
ile *.whatever
için whatever
tip dosyaları size kolu gerekir)
Bkz. Çalışma ağacı kodlama "UTF-16LE-BOM" .
Daha sonra eklendi
@Hackslash'ın ardından bunun yetersiz olduğu görülebilir
*.vmc text working-tree...
Güzel metin farkları almak için ihtiyacınız olan
*.vmc diff working-tree...
Her iki işi de koymak
*.vmc text diff working-tree...
Ama tartışmasız
- Gereksiz -
eol=...
ima edertext
- Ayrıntılı - büyük bir proje kolayca onlarca farklı metin dosyası türüne sahip olabilir
Sorun
Git'in bir makro özelliği binary
vardır -text -diff
. Bunun tersi +text +diff
yerleşik değildir, ancak git sentezlemek için araçları (sanırım!) Verir.
Çözüm
Git, kişinin yeni makro niteliklerini tanımlamasına izin verir.
.gitattributes
Dosyanızın üst kısmının
[attr]textfile text diff
Sonra metin ve fark olması gereken tüm yollar için
path textfile working-tree-encoding= eol=...
Çoğu durumda varsayılan kodlamanın (utf-8) ve varsayılan eol (yerel) olmasını isteyeceğiz ve bu nedenle bırakılabilir.
Çoğu çizgi şöyle görünmelidir
textfile *.c
textfile *.py
Etc
Neden sadece diff kullanmıyorsunuz?
Pratik: Çoğu durumda yerel eol istiyoruz. Bu da hayır demek eol=...
. Yani text
ima edilmeyecek ve açık bir şekilde konulması gerekiyor.
Kavramsal: İkili Metin vs ikili ayrımdır. eol, kodlama, fark vb.
feragat
İçinde yaşadığımız tuhaf zamanlardan dolayı, şu anda çalışan bir makineye sahip değilim. Şu anda en son eklemeyi kontrol edemiyorum. Birisi yanlış bir şey bulursa, onu alırım / kaldırırım.