Có vài vấn đề với giải pháp được liệt kê ở đây (thậm chí được chấp nhận).
- Bạn không cần phải liệt kê tất cả các băm khi bạn sẽ nhận được bản sao, cũng phải mất nhiều thời gian hơn.
Nó được xây dựng trên này, nơi bạn có thể tìm kiếm một chuỗi "test -f /"
trên nhiều chi nhánh master
và dev
như
git grep "test -f /" master dev
mà là giống như
printf "master\ndev" | xargs git grep "test -f /"
Vì vậy, ở đây đi.
Việc này sẽ tìm các dấu băm cho đầu của tất cả các nhánh và tìm kiếm cục bộ chỉ trong các cam kết đó.
git branch -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"
Nếu bạn cần phải tìm kiếm tại các chi nhánh ở xa quá thì thêm -a
:
git branch -a -v --no-abbrev | awk -F' *' '{print $3}' | xargs git grep "string/regexp"
Cập nhật:
# 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- | xargs git grep "string"
# search in branches, and tags
git show-ref | grep -v "refs/stash" | cut -d' ' -f2 | xargs git grep "string"
[git-grep] (http://www.kernel.org/pub/software/scm/git/docs/git-grep.html) có thể là những gì bạn đang tìm kiếm, nhưng tôi vẫn chưa chắc tùy chọn bạn cần ... – johnny
Có thể trùng lặp của [Làm thế nào để grep (tìm kiếm) mã cam kết trong lịch sử git?] (https://stackoverflow.com/questions/2928584/how-to-grep-search-committed- code-in-the-git-history) – nekketsuuu