Есть несколько проблем с решениями, перечисленными здесь (даже приняты).
- Вам не нужно перечислять все хэши, так как вы получите дубликаты, также это займет больше времени.
Он основан на этом, где вы можете искать строку "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"