Để tìm kiếm nội dung cam kết (nghĩa là các dòng nguồn thực tế, trái với thông điệp cam kết và tương tự), bạn cần thực hiện:
git grep <regexp> $(git rev-list --all)
git rev-list --all | xargs git grep <expression>
sẽ hoạt động nếu bạn gặp phải lỗi "Danh sách đối số quá dài".
Nếu bạn muốn giới hạn tìm kiếm ở một số cây con (ví dụ: "lib / produc"), bạn sẽ cần chuyển nó cho rev-list
tiểu ban và grep
cả:
git grep <regexp> $(git rev-list --all -- lib/util) -- lib/util
Điều này sẽ grep thông qua tất cả các văn bản cam kết của bạn cho regexp
.
Lý do vượt qua đường dẫn trong cả hai lệnh là vì rev-list
sẽ trả về danh sách sửa đổi, nơi tất cả các thay đổi lib/util
đã xảy ra, nhưng bạn cũng cần phải chuyển đến grep
để nó sẽ chỉ tìm kiếm trong đó lib/util
.
Chỉ cần tưởng tượng kịch bản sau đây: grep
có thể tìm thấy điều tương tự <regexp>
trên các tệp khác có trong cùng một bản sửa đổi được trả về rev-list
(ngay cả khi không có thay đổi nào đối với tệp đó trong bản sửa đổi đó).
Dưới đây là một số cách hữu ích khác để tìm kiếm nguồn của bạn:
Tìm kiếm cây làm việc để khớp văn bản biểu thức chính quy regrec:
git grep <regexp>
Tìm kiếm cây làm việc cho các dòng văn bản khớp với biểu thức chính quy regrec1 hoặc regapi2:
git grep -e <regexp1> [--or] -e <regexp2>
Tìm kiếm cây làm việc cho các dòng văn bản khớp với biểu thức chính quy regrec1 và regapi2, chỉ báo cáo đường dẫn tệp:
git grep -l -e <regexp1> --and -e <regexp2>
Tìm kiếm cây làm việc cho các tệp có các dòng văn bản khớp với biểu thức chính quy regrec1 và các dòng văn bản khớp với biểu thức chính quy regrec2:
git grep -l --all-match -e <regexp1> -e <regexp2>
Tìm kiếm cây làm việc cho các dòng thay đổi của mẫu phù hợp văn bản:
git diff --unified=0 | grep <pattern>
Tìm kiếm tất cả các sửa đổi cho văn bản phù hợp với biểu thức chính quy regrec:
git grep <regexp> $(git rev-list --all)
Tìm kiếm tất cả các sửa đổi giữa rev1 và rev2 để tìm văn bản khớp biểu thức chính quy regrec:
git grep <regexp> $(git rev-list <rev1>..<rev2>)
git log -S
và đổ lỗi) * [Vui với "git log --grep"] [2] (tìm kiếm thông điệp cam kết ) * [Vui với "git grep"] [3] [2]: gitster.livejournal.com/30195.html [3]: gitster.livejournal.com/27674.html