git недавно начал понимать кодировки, такие как utf16. См. Документацию gitattributes , найдитеworking-tree-encoding
[Убедитесь, что ваша справочная страница совпадает, так как она совсем новая!]
Если (скажем) файл UTF-16 без спецификации на машине Windows, добавьте в свой .gitattributes
файл
*.vmc text working-tree-encoding=UTF-16LE eol=CRLF
Если UTF-16 (с bom) на * nix сделает это:
*.vmc text working-tree-encoding=UTF-16-BOM eol=LF
(Заменить *.vmc
на*.whatever
для whatever
файлов типа вам нужно ручкой)
См .: Поддержка кодировки рабочего дерева "UTF-16LE-BOM" .
Добавлено позже
После @Hackslash можно обнаружить, что этого недостаточно
*.vmc text working-tree...
Чтобы получить красивые текстовые различия, вам нужно
*.vmc diff working-tree...
Помещение обоих тоже работает
*.vmc text diff working-tree...
Но это возможно
- Резервный -
eol=...
подразумеваетtext
- Подробно - в большом проекте легко могут быть десятки различных типов текстовых файлов.
Проблема
В Git есть макро-атрибут, binary
который означает -text -diff
. Противоположный+text +diff
не доступна встроенной, но git дает инструменты (я думаю!) Для его синтеза.
Решение
Git позволяет определять новые атрибуты макроса.
Я бы предложил эту верхнюю часть .gitattributes
файла, который у вас есть
[attr]textfile text diff
Затем для всех путей, которые должны быть text и diff, выполните
path textfile working-tree-encoding= eol=...
Обратите внимание, что в большинстве случаев нам нужна кодировка по умолчанию (utf-8) и eol по умолчанию (native), поэтому их можно отбросить.
Большинство строк должно выглядеть так
textfile *.c
textfile *.py
Etc
Почему бы просто не использовать diff?
Практично: в большинстве случаев нам нужен собственный eol. Что значит нет eol=...
. Это text
не подразумевается, и его нужно указывать явно.
Концептуальный: текст против двоичного - фундаментальное различие. eol, encoding, diff и т. д. - это лишь некоторые его аспекты.
Отказ от ответственности
Из-за странных времен, в которых мы живем, у меня нет машины с текущим работающим git. Поэтому в настоящий момент я не могу проверить последнее добавление. Если кто что-то не так, поправлю / удалю.