Хотя отклик ididak довольно крутой, и Handyman5 предоставляет скрипт для его использования, я нашел его немного ограниченным в использовании этого подхода.
Иногда вам нужно искать что-то, что может появиться / исчезнуть со временем, так почему бы не выполнить поиск по всем коммитам? Кроме того, иногда вам нужен подробный ответ, а в других случаях фиксируются только совпадения. Вот две версии этих опций. Поместите эти сценарии на свой путь:
ГИТ-находка-файл
for branch in $(git rev-list --all)
do
if (git ls-tree -r --name-only $branch | grep --quiet "$1")
then
echo $branch
fi
done
ГИТ-находка-файлы многословных
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 для возможной реализации.