git gần đây đã bắt đầu hiểu các bảng mã như utf16. Xem tài liệu gitattribut , tìm kiếmworking-tree-encoding
[Hãy chắc chắn rằng trang người đàn ông của bạn phù hợp vì điều này khá mới!]
Nếu (giả sử) tệp là UTF-16 không có BOM trên máy Windows thì hãy thêm vào .gitattributes
tệp của bạn
*.vmc text working-tree-encoding=UTF-16LE eol=CRLF
Nếu UTF-16 (có bom) trên * nix, hãy tạo nó:
*.vmc text working-tree-encoding=UTF-16-BOM eol=LF
(Thay thế *.vmc
bằng *.whatever
các whatever
loại tệp bạn cần xử lý)
Xem: Hỗ trợ mã hóa cây làm việc "UTF-16LE-BOM" .
Đã thêm sau
Theo dõi @Hackslash, người ta có thể thấy rằng điều này là không đủ
*.vmc text working-tree...
Để có được các văn bản khác nhau, bạn cần
*.vmc diff working-tree...
Đặt cả hai công việc là tốt
*.vmc text diff working-tree...
Nhưng nó được cho là
- Dự phòng -
eol=...
ngụ ýtext
- Verbose - một dự án lớn có thể dễ dàng có hàng tá loại tệp văn bản khác nhau
Vấn đề
Git có một thuộc tính vĩ mô binary
có nghĩa là -text -diff
. Ngược lại +text +diff
không có sẵn nhưng git cung cấp các công cụ (tôi nghĩ vậy!) Để tổng hợp nó
Giải pháp
Git cho phép một người xác định các thuộc tính macro mới.
Tôi muốn đề xuất rằng đầu .gitattributes
tập tin bạn có
[attr]textfile text diff
Sau đó, cho tất cả các đường dẫn cần phải là văn bản và diff
path textfile working-tree-encoding= eol=...
Lưu ý rằng trong hầu hết các trường hợp, chúng tôi sẽ muốn mã hóa mặc định (utf-8) và eol mặc định (gốc) và do đó có thể bị loại bỏ.
Hầu hết các dòng sẽ giống như
textfile *.c
textfile *.py
Etc
Tại sao không chỉ sử dụng diff?
Thực tế: Trong hầu hết các trường hợp, chúng tôi muốn eol bản địa. Có nghĩa là không eol=...
. Vì vậy, text
sẽ không được ngụ ý và cần phải được đặt rõ ràng.
Khái niệm: Văn bản Vs nhị phân là sự phân biệt cơ bản. eol, mã hóa, diff vv chỉ là một số khía cạnh của nó.
Khước từ
Do thời kỳ kỳ lạ mà chúng ta đang sống, tôi không có một chiếc máy với công việc hiện tại. Vì vậy, hiện tại tôi không thể kiểm tra bổ sung mới nhất. Nếu ai đó tìm thấy một cái gì đó sai, tôi sẽ phát / xóa.