Как перечислить каждый файл для каждой ревизии в Git (например, hg manifest --all Mercurial --all)? - PullRequest
2 голосов
/ 25 сентября 2011

В Mercurial есть команда для вывода списка всех файлов, которые есть в хранилище для каждой ревизии:

hg manifest --all

Есть ли в Git эквивалентная команда?Я знаю о git ls-files, но в нем перечислены только файлы из индекса (текущая версия).

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Это должно дать все файлы, которые когда-либо существовали:

git log --pretty=format: --name-only | sort | uniq
0 голосов
/ 25 сентября 2011

Вы можете сделать это с помощью следующего конвейера:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...