O git começou recentemente a entender codificações como utf16. Consulte os documentos gitattributes , pesquise porworking-tree-encoding
[Verifique se a sua página de manual corresponde, pois é uma novidade!]
Se (digamos) o arquivo for UTF-16 sem BOM na máquina Windows, adicione-o ao .gitattributes
arquivo
*.vmc text working-tree-encoding=UTF-16LE eol=CRLF
Se UTF-16 (com bom) em * nix, faça-o:
*.vmc text working-tree-encoding=UTF-16-BOM eol=LF
(Substitua *.vmc
com *.whatever
para whatever
arquivos do tipo que você precisa para lidar com)
Consulte: Suporte à codificação de árvore de trabalho "UTF-16LE-BOM" .
Adicionado mais tarde
Seguindo @Hackslash, pode-se achar que isso é insuficiente
*.vmc text working-tree...
Para obter boas diferenças de texto, você precisa
*.vmc diff working-tree...
Colocando ambos os trabalhos também
*.vmc text diff working-tree...
Mas é sem dúvida
- Redundante -
eol=...
implicatext
- Detalhado - um projeto grande pode facilmente ter dezenas de tipos diferentes de arquivos de texto
O problema
Git tem um atributo macro, o binary
que significa -text -diff
. O oposto +text +diff
não está disponível, mas o git fornece as ferramentas (eu acho!) Para sintetizá-lo
A solução
O Git permite definir novos atributos de macro.
Eu proporia que o topo do .gitattributes
arquivo que você tem
[attr]textfile text diff
Então, para todos os caminhos que precisam ser texto e diff
path textfile working-tree-encoding= eol=...
Observe que, na maioria dos casos, queremos a codificação padrão (utf-8) e o eol padrão (nativo), podendo ser descartados.
A maioria das linhas deve parecer
textfile *.c
textfile *.py
Etc
Por que não usar apenas diff?
Prático: Na maioria dos casos, queremos eol nativo. O que significa que não eol=...
. Portanto text
, não será implícito e precisa ser explicitamente explicado.
Conceitual: Texto versus binário é a distinção fundamental. eol, codificação, diff etc são apenas alguns aspectos.
aviso Legal
Devido aos tempos bizarros em que vivemos, não tenho uma máquina com um git atual. No momento, não consigo verificar a última adição. Se alguém encontrar algo errado, eu o emendarei / removerei.