Hay algunos problemas con las soluciones enumeradas aquí (incluso aceptadas).
No necesita enumerar todos los hashes ya que obtendrá duplicados. Además, lleva más tiempo.
Se basa en esto, donde puede buscar una cadena "test -f /"
en varias ramas master
y dev
como
git grep "test -f /" master dev
que es lo mismo que
printf "master\ndev" | xargs git grep "test -f /"
Entonces aquí va.
Esto encuentra los hash para la punta de todas las sucursales locales y busca solo en esas confirmaciones:
git branch -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"
Si necesita buscar también en sucursales remotas, agregue -a
:
git branch -a -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"
Más lejos:
# 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"