git recientemente ha comenzado a comprender codificaciones como utf16. Ver gitattributes docs, buscarworking-tree-encoding
[¡Asegúrese de que su página de manual coincida ya que esto es bastante nuevo!]
Si (por ejemplo) el archivo es UTF-16 sin BOM en la máquina Windows, agréguelo a su .gitattributes
archivo
*.vmc text working-tree-encoding=UTF-16LE eol=CRLF
Si UTF-16 (con bom) en * nix, hágalo:
*.vmc text working-tree-encoding=UTF-16-BOM eol=LF
(Reemplazar *.vmc
con *.whatever
para whatever
los ficheros del tipo que necesita para manejar)
Consulte: Soporte de codificación de árbol de trabajo "UTF-16LE-BOM" .
Agregado luego
Después de @Hackslash, uno puede encontrar que esto es insuficiente
*.vmc text working-tree...
Para obtener buenas diferencias de texto necesitas
*.vmc diff working-tree...
Poniendo ambas obras también
*.vmc text diff working-tree...
Pero es discutible
- Redundante -
eol=...
implicatext
- Detallado: un proyecto grande podría tener fácilmente docenas de diferentes tipos de archivos de texto
El problema
Git tiene un macro-atributo binary
que significa -text -diff
. Lo contrario +text +diff
no está disponible incorporado, pero git proporciona las herramientas (¡creo!) Para sintetizarlo
La solución
Git le permite a uno definir nuevos atributos de macro.
Propondría que la parte superior de la .gitattributes
archivo que tienes
[attr]textfile text diff
Luego, para todas las rutas que deben ser text y diff do
path textfile working-tree-encoding= eol=...
Tenga en cuenta que en la mayoría de los casos nos gustaría la codificación predeterminada (utf-8) y la eol predeterminada (nativa) y así lo se pueden eliminar.
La mayoría de las líneas deberían verse como
textfile *.c
textfile *.py
Etc
¿Por qué no solo usar diff?
Práctico: en la mayoría de los casos queremos eol nativo. Lo que significa que noeol=...
. Por text
lo tanto , no se implicará y debe expresarse explícitamente.
Conceptual: el texto V binario es la distinción fundamental. eol, codificación, diff, etc. son solo algunos aspectos.
Descargo de responsabilidad
Debido a los tiempos extraños en que vivimos, no tengo una máquina con un git de trabajo actual. Por lo tanto, en este momento no puedo verificar la última incorporación. Si alguien encuentra algo mal, lo enmendaré / eliminaré.