Bien que @ididak réponse est assez cool, et @Handyman5 fournit un script pour l'utiliser, j'ai trouvé peu restreint qui l'approche.
Parfois, vous avez besoin de chercher quelque chose qui peut apparaître/disparaître au fil du temps, alors pourquoi ne pas rechercher à l'encontre de tous les commits? Sans compter que, parfois, vous avez besoin d'une réponse en clair, d'autres fois seulement commettre des matchs. Voici les deux options.
Mettre 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 le 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
Voir que l'utilisation de getopt vous pouvez modifier ce script pour alterner la recherche de tous les commits, refs, refs/heads, été détaillé, etc, mais c'est une autre histoire...
$ git find-file <regex>
$ git find-file --verbose <regex>
$ git find-file --verbose --target=refs/heads <regex>