Obwohl ididaks Antwort ist ziemlich cool, und Handwerker5 ein Skript zur Verfügung stellt, fand ich diesen Ansatz ein wenig eingeschränkt.
Manchmal muss man nach etwas suchen, das im Laufe der Zeit auftauchen oder verschwinden kann, warum also nicht alle Commits durchsuchen? Außerdem brauchen Sie manchmal eine ausführliche Antwort und manchmal nur Commit-Treffer. Hier sind zwei Versionen dieser Optionen. Legen Sie diese Skripte in Ihren Pfad:
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
Jetzt können Sie
$ 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
Sie sehen, dass mit getopt Sie können das Skript so ändern, dass es abwechselnd alle Commits, Refs, Refs/Heads durchsucht, ausführlich ist, usw.
$ git find-file <regex>
$ git find-file --verbose <regex>
$ git find-file --verbose --decorated --color <regex>
Kasse https://github.com/albfan/git-find-file für eine mögliche Umsetzung.