Я использую git diff --name-status
, чтобы отслеживать, какие файлы были изменены / добавлены / удалены / переименованы / копируется между двумя коммитами, и он отлично работает.
Теперь предположим, что я перемещаю файл file1
в newdir / file1
, фиксирую, а затем запускаю git diff, я получаю следующее:
$ git diff --name-status -C HEAD~1 HEAD
R100 file1 newdir/file1
Есть ли способ попросить git ограничиться списком изменений внутри данного каталога, но не его дочерних элементов? Я хотел бы узнать точные изменения как для корневого каталога, так и для каталога newdir
отдельно. Для newdir
это просто:
$ git diff --name-status -C HEAD~1 HEAD -- newdir
A newdir/file1
… но как я могу получить «дополнительную» информацию о различиях в корневом каталоге? То есть, этот вывод:
$ git diff ???
D file1
Обратите внимание, что я хочу сохранить параметр -C
для обнаружения переименований и копий в одном каталоге.
При выполнении Linux или совместимой оболочки с find
доступный, можно использовать find
для генерации списка файлов некаталога в токе (или другой) каталог, затем подать это к git diff
, например:
git diff --stat --other-git-diff-args -- $(find . -type f -depth 1 -print0 | tr '\0' ' ')