Подтвердить что ты не робот

Переопределить git выбор двоичного файла для текста

Я видел несколько вопросов о том, как сделать git обработать текстовый файл как двоичный, но еще не видел обратного:

Как изменить git выбор обработки текстового файла как двоичного? У меня есть текстовый файл, где в некоторых строках конфигурации EOT и ETX используются для разделения частей параметров конфигурации.

Например, исходный код содержит строки, подобные этому:

INPUT 'ScrollRemote[EOT]no[ETX]NumDown[EOT]0[ETX]CalcWidth[EOT]no[ETX]MaxWidth[EOT]80[ETX]FetchOnReposToEnd[EOT]yes[ETX].....'
4b9b3361

Ответ 1

Способ хранения файлов внутри репозитория Git не имеет отношения к тому, как они обрабатываются при отображении. Таким образом, программа git diff, когда ее попросили сравнить два файла, сначала получает как полные файлы из репозитория, так и запускает с ними разностный алгоритм.

Обычно git diff ищет непечатаемые символы в файлах, и если он выглядит так, как файл, скорее всего, является двоичным файлом, он отказывается показать разницу. Обоснованием для этого является различие двоичных файлов, вероятно, не будет читаемым человеком и, вероятно, испортит ваш терминал, если будет отображаться.

Однако вы можете указать git diff всегда обрабатывать файлы как текст с помощью параметра --text. Вы можете указать это для одной команды diff:

git diff --text HEAD HEAD^ file.txt

Вы можете сделать Git всегда использовать этот параметр, настроив .gitattributes файл, который содержит:

file.txt diff

Атрибут diff здесь означает:

Путь, к которому установлен атрибут diff, обрабатывается как текст, даже если они содержат значения байтов, которые обычно не отображаются в текстовых файлах, например, NUL.

Ответ 2

Посмотрите Git Атрибуты - они могут помочь вам, указав, что определенное расширение файла должно рассматриваться как текст.

Ответ 3

Если вы пытаетесь сравнить или объединить текстовые файлы, а git говорит, что они являются двоичными файлами, они могут иметь простое кодирование (например, UTF-8 и ANSI). См. Ответ который я дал в этом сообщении.