Bien que la réponse d'ididak soit plutôt cool, et Handyman5 fournit un script pour l'utiliser, je l'ai trouvé un peu limité pour utiliser cette approche.
Parfois, vous devez rechercher quelque chose qui peut apparaître / disparaître avec le temps, alors pourquoi ne pas chercher contre tous les commits? En plus de cela, vous avez parfois besoin d'une réponse détaillée, et d'autres fois, ne validez que les correspondances. Voici deux versions de ces options. Mettez ces scripts sur votre chemin:
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
Maintenant vous pouvez faire
$ 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
Voyez qu'en utilisant getopt vous pouvez modifier ce script pour alterner la recherche de tous les commits, refs, refs / heads, été verbeux, etc.
$ git find-file <regex>
$ git find-file --verbose <regex>
$ git find-file --verbose --decorated --color <regex>
Consultez https://github.com/albfan/git-find-file pour une implémentation possible.