Один из способов получить это с помощью ls-tree
:
git ls-tree -r --name-only <commit>
(Обратите внимание, что это смотрит на часть дерева, соответствующую вашему текущему каталогу, поэтому вы должны либо запустить его с верхнего уровня репо, либо указать параметр --full-tree
.)
Это по сути мгновенно, поскольку все, что нужно сделать Git, - это рекурсивно исследовать дерево; ему даже не нужно просматривать содержимое файлов.
Я не уверен, как вы собираетесь использовать список имен файлов для обнаружения одного и того же файла под двумя разными именами. Если вы просто имеете в виду, что хотите искать имена файлов, которые были бы одинаковыми в файловой системе без учета регистра, тогда вам нужен список имен файлов.
Однако, если вы считаете, что файлы на самом деле могут иметь одинаковое содержимое, вы можете удалить --name-only
, чтобы вы также видели SHA1 всего файла и могли находить идентичные файлы, просматривая дубликаты хэшей.