Embora a resposta do ididak seja bem legal, e o Handyman5 forneça um script para usá-lo, achei um pouco restrito o uso dessa abordagem.
Às vezes, você precisa procurar algo que possa aparecer / desaparecer ao longo do tempo; então, por que não procurar todos os commits? Além disso, às vezes você precisa de uma resposta detalhada e outras vezes apenas confirma as correspondências. Aqui estão duas versões dessas opções. Coloque estes scripts no seu caminho:
git-find-file
for branch in $(git rev-list --all)
do
if (git ls-tree -r --name-only $branch | grep --quiet "$1")
then
echo $branch
fi
done
git-find-file-verbose
for branch in $(git rev-list --all)
do
git ls-tree -r --name-only $branch | grep "$1" | sed 's/^/'$branch': /'
done
Agora você pode fazer
$ git find-file <regex>
sha1
sha2
$ git find-file-verbose <regex>
sha1: path/to/<regex>/searched
sha1: path/to/another/<regex>/in/same/sha
sha2: path/to/other/<regex>/in/other/sha
Veja que, usando getopt, você pode modificar esse script para pesquisar alternadamente todos os commits, refs, refs / heads, verbos etc.
$ git find-file <regex>
$ git find-file --verbose <regex>
$ git find-file --verbose --decorated --color <regex>
Confira https://github.com/albfan/git-find-file para uma possível implementação.