Хоча відповідь ідідака досить класна, і Handyman5 надає сценарій для її використання, я вважав, що цей підхід трохи обмежений.
Іноді потрібно шукати щось, що може з’являтися / зникати з часом, то чому б не шукати проти всіх домовленостей? Крім того, іноді вам потрібна багатослівна відповідь, а інший раз лише фіксування відповідностей. Ось дві версії цих варіантів. Покладіть ці сценарії на свій шлях:
git-find-файл
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
Тепер ви можете зробити
$ 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
Дивіться, що за допомогою getopt ви можете змінювати цей скрипт, щоб чергувати пошук усіх комісій, refs, refs / heads, багатослівний тощо.
$ git find-file <regex>
$ git find-file --verbose <regex>
$ git find-file --verbose --decorated --color <regex>
Отримайте замовлення https://github.com/albfan/git-find-file для можливої реалізації.