Начиная с git
v1.7.11, вы можете использовать git difftool --dir-diff
для выполнения директории diff.
Например, эта функция хорошо работает с Meld 3.14.2 и позволяет просматривать все измененные файлы:
git difftool --dir-diff --tool=meld HEAD~ HEAD
Это удобная функция Bash:
git-diff-meld() (
git difftool --dir-diff --tool=meld "${1:-HEAD~}" "${2:-HEAD}"
)
Следующий ответ относится к git
установкам старше v1.7.11.
Этот же вопрос был задан в списке рассылки git .
Я собрал сценарий оболочки на основе этого потока электронной почты, который выполняет директорию diff между произвольными коммитами.
Начиная с git v1.7.10, git-diffall
скрипт включен в contrib
стандартную установку git.
Для версий до v1.7.10 вы можете установить из git-diffall
проекта на GitHub .
Вот описание проекта:
Скрипт git-diffall предоставляет механизм сравнения на основе каталогов для git. Сценарий использует опцию конфигурации diff.tool, чтобы определить, какая программа просмотра diff используется.
Этот скрипт совместим со всеми формами, используемыми для указания диапазона ревизий для сравнения:
1) git diffall
: показывает разницу между рабочим деревом и поэтапными изменениями
2) git diffall --cached [<commit>]
: показывает разницу между поэтапными изменениями и HEAD
(или другим именованным коммитом)
3) git diffall <commit>
: показывает разницу между рабочим деревом и именованным коммитом
4) git diffall <commit> <commit>
: показывает разницу между двумя именованными коммитами
5) git diffall <commit>..<commit>
: то же самое как выше
6) git diffall <commit>...<commit>
: показать изменения на ветви, содержащей и до второй, начиная с общего предка обоих<commit>
Примечание: все формы имеют дополнительный ограничитель пути [--] [<path>]
Этот скрипт основан на примере, представленном Томасом Растом в списке Git .