Вы можете сделать это с помощью следующего конвейера:
git rev-list HEAD | xargs -L 1 git ls-tree -r | awk '{print $4}' | sort | uniq
Это делает следующее:
- используйте
git rev-list
, чтобы получить список ревизий в обратном направлении от HEAD - для каждой ревизии, используйте
git ls-tree -r
, чтобы показать список файлов - , извлеките только имена файлов из списка, используя awk
- , используя
sort
и uniq
, отфильтруйтеимена, которые перечислены более одного раза
Это даст имя каждому файлу, который когда-либо был частью истории текущей HEAD.