Это в основном две контекстно-зависимые версии ответа Jaap, каждая с бонусом.
Полные или почти полные комплекты
В каталоге A есть несколько файлов, которые вы хотите сравнить с некоторыми другими файлами. Если набор файлов, с которыми вы хотите сравнить их в B, практически идентичен по содержанию, просто установите git config --global diff.colorMoved true
и используйте предложение Jaap:
git diff --no-index A/ B/
«Перемещенный цвет» будет использовать другой цвет линии, когда строки, удаленные из одного места, будут отображаться в другом месте в разнице ... независимо от того, были ли они перемещены вместе с файлом или перемещены в другой файл, как в рефакторе
Конкретные файлы для сравнения
Если есть только несколько файлов в B и много файлов в A, например,
┌ A | ├ (various folders) | └ src | ├ (various files) | ├ foo.c | └ bar.c └ B ├ new-foo.c └ new-bar.c
... вы можете попытаться сделать так, чтобы определение переименования Git сделало всю работу. Я не знаю, какая версия Git добавляет степень отслеживания переименования, которая необходима для этого (я использую v2.18). Кроме того, я провел тестирование на довольно тривиальном наборе файлов.
Вы действительно не хотите видеть, что большинство файлов «отсутствуют» в B. Кроме того, вы не хотите беспокоиться о том, чтобы дать файлам B то же имя / путь, что и в A, так что вы оставляете их везде и положить в фильтр, который включает в себя переименованные и измененные файлы.
git diff --no-index --diff-filter=RM A/ B/
diff --git a/A/src/foo.c b/B/new-foo.c similarity index 65% rename from A/src/foo.c rename to B/new-foo.c index dd51990..64445b1 100644 --- a/A/src/foo.c +++ b/B/new-foo.c @@ -1,4 +1,4 @@ octopus cow -dog tiger +flamingo diff --git a/A/src/bar.c b/B/new-bar.c similarity index 87% rename from A/src/bar.c rename to B/new-bar.c ...