Хотя ответ ididak довольно крутой, а Handyman5 предоставляет скрипт для его использования, я нашел его немного ограничен в использовании этого подхода.
Иногда вам нужно искать что-то, что может появляться / исчезать со временем, так почему бы не искать по всем коммитам? Кроме того, иногда вам нужен подробный ответ, а иногда - только фиксация совпадений. Вот две версии этих вариантов. Поместите эти сценарии на свой путь:
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
Теперь ты можешь сделать
$ 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 вы можете изменить этот скрипт, чтобы поочередно искать все коммиты, ссылки, ссылки / главы, были многословны и т. д.
$ git find-file <regex>
$ git find-file --verbose <regex>
$ git find-file --verbose --decorated --color <regex>
Оформить заказ https://github.com/albfan/git-find-file для Возможная реализация.
person
albfan
schedule
01.06.2013