Ada beberapa masalah dengan solusi yang tercantum di sini (bahkan diterima).
Anda tidak perlu mendaftar semua hash karena Anda akan mendapatkan duplikat. Juga, itu membutuhkan lebih banyak waktu.
Itu dibangun di sini di mana Anda dapat mencari string "test -f /"
di beberapa cabang master
dan dev
sebagai
git grep "test -f /" master dev
yang sama dengan
printf "master\ndev" | xargs git grep "test -f /"
Jadi begini.
Ini menemukan hash untuk tip dari semua cabang lokal dan hanya mencari di dalam komit:
git branch -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"
Jika Anda perlu mencari di cabang terpencil juga maka tambahkan -a
:
git branch -a -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"
Lebih lanjut:
# 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"