Как я могу ограничить git-diff только одним каталогом без его дочерних элементов?

Я использую 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 для обнаружения переименований и копий в одном каталоге.

12
задан Jean-Philippe Pellet 25 May 2011 в 11:56
поделиться

1 ответ

При выполнении Linux или совместимой оболочки с find доступный, можно использовать find для генерации списка файлов некаталога в токе (или другой) каталог, затем подать это к git diff, например:

git diff --stat --other-git-diff-args -- $(find . -type f -depth 1 -print0 | tr '\0' ' ')
0
ответ дан 2 December 2019 в 23:59
поделиться
Другие вопросы по тегам:

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