скажите git не diff на уровне строки для полностью измененного файла - PullRequest
1 голос
/ 23 ноября 2011

У меня есть образец HTML-файла в git. В последнее время его необходимо полностью изменить, поэтому нет особого смысла смотреть на разницу между новым и старым.

В настоящее время diff будет отображаться как ++ - + - + - + --- ++, и я хочу, чтобы он просто отображал -------- +++++++.

Есть ли способ сказать git, что это изменение файла является полным изменением, и пользователям не нужно знать различия строк, а менять в целом?

P.S. ответ показал путь в команде diff, но было бы здорово, если бы я мог постоянно указывать это для конкретного файла в команде commit.

1 Ответ

3 голосов
/ 23 ноября 2011

Каждый коммит в git хранит совершенно новый большой двоичный объект для файла, даже если изменение было текстовым файлом, состоящим из одного символа (в дальнейшем это может быть просто дельта и т.д.)

И вообще не стоит беспокоиться о том, как и что хранит git (а место на диске дешево)

Обновление:

Если вы просто беспокоитесь о разнице, которую вы видите, когда файл перезаписывается, вы можете использовать опцию -B с diff:

-B [<n>][/<m>]
--break-переписывает [=[<n>][/<m>]]

Разбить полный переписать изменения на пары удаления и создания. это служит двум целям:

Это влияет на способ изменения, равный общему переписыванию файла не как серия удаления и вставки смешаны вместе с очень несколько строк, которые соответствуют тексту как контекст, но как однократное удаление всего старого с последующей однократной вставкой все новое, и число m контролирует этот аспект опции -B (по умолчанию 60%). -B / 70% указывает, что менее 30% оригинала должен остаться в результате для git, чтобы считать его полностью переписанным (т. е. в противном случае полученный патч будет серией удалений и вставка, смешанная с контекстными строками).

При использовании с -M полностью переписанный файл также считается источник переименования (обычно -M рассматривает только исчезнувший файл как источник переименования), а число n управляет этим аспектом опция -B (по умолчанию 50%). -B20% указывает, что изменение с добавление и удаление по сравнению с 20% или более от размера файла право быть выбранным в качестве возможного источника переименования в другой файл.

Существуют более сложные методы, такие как использование filter-branch и т. Д. Для удаления (и изменения) истории, но я не буду рекомендовать их в этом случае.

...