git baru-baru ini mulai memahami pengkodean seperti utf16. Lihat dokumentasi gitattributes , cariworking-tree-encoding
[Pastikan halaman manualmu cocok karena ini cukup baru!]
Jika (katakanlah) file tersebut adalah UTF-16 tanpa BOM pada mesin Windows kemudian tambahkan ke .gitattributes
file Anda
*.vmc text working-tree-encoding=UTF-16LE eol=CRLF
Jika UTF-16 (dengan bom) pada * nix membuatnya:
*.vmc text working-tree-encoding=UTF-16-BOM eol=LF
(Ganti *.vmc
dengan *.whatever
untuk whatever
jenis file yang perlu Anda tangani)
Lihat: Mendukung pengkodean pohon-kerja "UTF-16LE-BOM" .
Ditambahkan nanti
Mengikuti @ Hacklash, orang mungkin menemukan bahwa ini tidak cukup
*.vmc text working-tree...
Untuk mendapatkan perbedaan teks yang Anda butuhkan
*.vmc diff working-tree...
Puting keduanya bekerja juga
*.vmc text diff working-tree...
Tapi itu bisa dibilang
- Redundan -
eol=...
menyiratkantext
- Verbose - proyek besar dapat dengan mudah memiliki lusinan jenis file teks yang berbeda
Masalah
Git memiliki atribut makro binary
yang artinya -text -diff
. Sebaliknya +text +diff
tidak tersedia built-in tetapi git memberikan alat (saya pikir!) Untuk mensintesisnya
Solusinya
Git memungkinkan seseorang untuk mendefinisikan atribut makro baru.
Saya akan mengusulkan bagian atas .gitattributes
file yang Anda miliki
[attr]textfile text diff
Kemudian untuk semua jalur yang perlu dilakukan adalah teks dan diff
path textfile working-tree-encoding= eol=...
Perhatikan bahwa dalam kebanyakan kasus, kita menginginkan penyandian default (utf-8) dan default eol (asli) dan karenanya dapat dihapus.
Sebagian besar garis akan terlihat seperti
textfile *.c
textfile *.py
Etc
Mengapa tidak menggunakan diff saja?
Praktis: Dalam kebanyakan kasus, kami menginginkan asli eol. Yang berarti tidak eol=...
. Jadi text
tidak akan tersirat dan perlu dimasukkan secara eksplisit.
Konseptual: Teks Vs biner adalah perbedaan mendasar. eol, encoding, diff dll hanyalah beberapa aspeknya.
Penolakan
Karena masa aneh yang kita tinggali, aku tidak punya mesin dengan git yang berfungsi saat ini. Jadi saya saat ini tidak dapat memeriksa penambahan terbaru. Jika seseorang menemukan sesuatu yang salah, saya akan memperbaiki / menghapus.