Хм, оригинальный вопрос был о хранилище. Репозиторий содержит более 1 коммита (по крайней мере, в общем случае), но ответы, данные перед поиском, выполняются только через один коммит.
Поскольку я не смог найти ответ, который действительно просматривал бы всю историю коммитов, я написал скрипт быстрого перебора git-find-by-name, который принимает (почти) все коммиты.
#! /bin/sh
tmpdir=$(mktemp -td git-find.XXXX)
trap "rm -r $tmpdir" EXIT INT TERM
allrevs=$(git rev-list --all)
# well, nearly all revs, we could still check the log if we have
# dangling commits and we could include the index to be perfect...
for rev in $allrevs
do
git ls-tree --full-tree -r $rev >$tmpdir/$rev
done
cd $tmpdir
grep $1 *
Может быть, есть более элегантный способ.
Обратите внимание на тривиальный способ передачи параметра в grep, чтобы он соответствовал частям имени файла. Если это нежелательно, закрепите свое поисковое выражение и / или добавьте подходящие параметры grep.
Для глубокой истории вывод может быть слишком шумным, я подумал о скрипте, который преобразует
список ревизий в диапазоне, как противоположность тому, что может сделать git rev-list. Но до сих пор это осталось мыслью.