Mặc dù phản hồi của ididak khá tuyệt và Handyman5 cung cấp một tập lệnh để sử dụng nó, tôi thấy nó hơi bị hạn chế khi sử dụng phương pháp đó.
Đôi khi bạn cần tìm kiếm thứ gì đó có thể xuất hiện / biến mất theo thời gian, vậy tại sao không tìm kiếm chống lại tất cả các cam kết? Bên cạnh đó, đôi khi bạn cần một phản hồi dài dòng và những lần khác chỉ cam kết khớp. Đây là hai phiên bản của những lựa chọn đó. Đặt các tập lệnh này trên đường dẫn của bạn:
git-find-file
for branch in $(git rev-list --all)
do
if (git ls-tree -r --name-only $branch | grep --quiet "$1")
then
echo $branch
fi
done
git-find-file-verbose
for branch in $(git rev-list --all)
do
git ls-tree -r --name-only $branch | grep "$1" | sed 's/^/'$branch': /'
done
Bây giờ bạn có thể làm
$ git find-file <regex>
sha1
sha2
$ git find-file-verbose <regex>
sha1: path/to/<regex>/searched
sha1: path/to/another/<regex>/in/same/sha
sha2: path/to/other/<regex>/in/other/sha
Xem rằng bằng cách sử dụng getopt, bạn có thể sửa đổi tập lệnh đó để thay thế tìm kiếm tất cả các xác nhận, refs, refs / Heads, verbose, v.v.
$ git find-file <regex>
$ git find-file --verbose <regex>
$ git find-file --verbose --decorated --color <regex>
Thanh toán https://github.com/albfan/git-find-file để triển khai có thể.