Игнорировать определенные изменения в git diff

693
jsharp

Можно ли получить отчет из git diff или связанных с ним команд, который исключает определенную категорию изменений?

Меня попросили рассмотреть изменение, в котором огромное количество файлов прошло эквивалент s / 2016/2017 / g. (Мы обновили стороннюю флягу, и в результате многие наши операции импорта теперь ссылаются на другой пакет.)

Существуют ли варианты просмотра этого различия из командной строки, но подавления всех изменений, которые просто состоят из чего-то вроде следующего, чтобы я мог сосредоточиться на любых логических изменениях?

Игнорировать:

-import com.example.2016_2.util.Utility +import com.example.2017_2.util.Utility 

Держать:

-Utility util = new Utility(); +Utility util = Utility.create(); 

Если ответ состоит в том, чтобы написать свой собственный сценарий и интегрировать через git diff --porcelainили путем настройки GIT_EXTERNAL_DIFF, я, безусловно, игра; просто интересно, если

  1. это поддерживается из коробки, и я почему-то пропустил это на странице руководства;
  2. есть и другие команды git diff *, которые я могу использовать для этого;
  3. если соответствующий исполняемый файл diff уже существует, который я могу предоставить через GIT_EXTERNAL_DIFF
2
`--word-diff` и` --word-diff-regex` могут помочь, просто выделив изменения в 2016/2017 без отображения полной строки как измененной. Patrick Mevzek 6 лет назад 0

1 ответ на вопрос

0
xenoid

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

  • проверить код с последующими изменениями
  • скопировать все дерево кода в другой каталог
  • отменить изменение 2016/2017 в этой копии
  • в git tree, посмотрите исторический коммит
  • выполнить рекурсивное сравнение между двумя деревьями (BeyondCompare в Windows, kdiff3в Linux)
Я бы сделал то же самое, но просто * используя * git: создать новую временную ветвь, основанную на `new`, отменить коммит замещения и сравнить со` old`. Таким образом, git может помочь, обнаруживая ходы / переименования И вы можете использовать свою IDE. A.H. 6 лет назад 0
«скопировать все дерево кода в другой каталог», для этого вы можете использовать функцию `git worktree` Patrick Mevzek 6 лет назад 0

Похожие вопросы