Есть несколько проблем с решениями, перечисленными здесь (даже приняты).
Вам не нужно перечислять все хэши, так как вы получите дубликаты. Кроме того, это занимает больше времени.
Он основан на этом, где вы можете искать строку "test -f /"
по нескольким ветвям master
и dev
как
git grep "test -f /" master dev
который так же, как
printf "master\ndev" | xargs git grep "test -f /"
Так что здесь идет.
Это находит хэши для кончика всех локальных веток и ищет только в тех коммитах:
git branch -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"
Если вам нужно искать и в удаленных ветках, добавьте -a
:
git branch -a -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"
Дальше:
# Search in local branches
git branch | cut -c3- | xargs git grep "string"
# Search in remote branches
git branch -r | cut -c3- | xargs git grep "string"
# Search in all (local and remote) branches
git branch -a | cut -c3- | cut -d' ' -f 1 | xargs git grep "string"
# Search in branches, and tags
git show-ref | grep -v "refs/stash" | cut -d' ' -f2 | xargs git grep "string"