Что означает сообщение «переписать… (90%)» после коммита Git? [Дубликат]

На этот вопрос уже есть ответ:

Что это значит, когда Git говорит «переписать» или «переименовать» в сообщении фиксации? 1 ответ

Когда git делает коммит, он перезаписывает двоичные файлы чем-то похожим наrewrite foobar.bin (76%). Что это %? Процентное изменение или процент сохранен из старого файла. Я знаю, что git использует двоичную дельту для файлов, но я просто не знаю, какую часть перезаписи представляет%, и ее нет на странице справки дляgit help commit.

Благодарность

 Greg Hewgill26 июн. 2009 г., 09:06
Git на самом деле хранит полную копию каждого коммита для каждого файла (как «blob»). Когда вы запрашиваете diff, Git получает обе копии файла и запускает diff в этот момент. Фактическая разница нигде не сохраняется. Это на самом деле не отвечает на ваш вопрос, но указывает на то, что представление о Git как о хранении «двоичных дельт» не совсем корректно.
 VonC26 июн. 2009 г., 00:12
Может также быть связано с / Stackoverflow.com вопросы / 244639 / ...

Ответы на вопрос(3)

Решение Вопроса

линий. Git думает, что ваш файл текстовый.

 Greg Hewgill26 июн. 2009 г., 09:08
Я считаю, что индекс сходства не связан с тем, считает ли Git файл текстовым. Не уверен в этом, так как некоторые двоичные файлы очень похожи на текст.

ГИТ-дифф справочные страницы:

Индекс сходства - это процент неизмененных строк, а индекс отличия - это процент измененных строк. Это округленное вниз целое число, за которым следует знак процента. Таким образом, значение индекса сходства 100% зарезервировано для двух одинаковых файлов, в то время как 100% -ное различие означает, что ни одна строка из старого файла не превратилась в новый.

Впервые я увидел число, которое, по моему мнению, сильно изменилось в моих двоичных файлах!.

 Eric23 июн. 2016 г., 19:20
Так что, если я вижу переименование, за которым следует 67%, тогда я должен интерпретировать это, поскольку файл был не только переименован, но и что 67% исходного файла все еще присутствует? Конечно, это может означать, что кто-то отредактировал 33% исходного файла во время переименования. Будет ли выгоднее, если переименование будет одним коммитом, а затем произойдет редактирование файла? Будет ли это давать выходной сигнал индекса сходства переименования, чтобы быть 100%? Что в теории означало бы, что переименование прошло успешно и данные не были потеряны? Сегодня я впервые увидел это и хочу убедиться, что понимаю, для чего он предназначен.

идит ваш двоичный файл как двоичный. Чтобы заставить git сделать это правильно, поместите следующую строку в .Gitattributes:

*.bin -crlf -diff -merge

Отэта страниц это означает

@all файлов с расширением [.bin] не будет перевода каретки / перевода строки, они не будут обработаны, а слияния приведут к конфликтам, оставив исходный файл без изменений.

 Greg Hewgill26 июн. 2009 г., 09:05
Это не то, что означает «переписать» в контексте вопроса. Git говорит: «Эй, похоже, ты переписал этот файл, но оставил 76% его таким же, как и раньше».

Ваш ответ на вопрос