Trong git 1.9.0, "từ ma thuật" exclude
đã được thêm vào pathspec
s. Vì vậy, nếu bạn muốn tìm kiếm foobar
trong mọi tệp ngoại trừ những kết quả khớp *.java
bạn có thể làm:
git grep foobar -- './*' ':(exclude)*.java'
Hoặc sử dụng !
"biểu mẫu ngắn" để loại trừ:
git grep foobar -- './*' ':!*.java'
Lưu ý rằng trong các phiên bản git lên đến v2.12, khi sử dụng loại trừ pathspec
, bạn phải có ít nhất một "bao gồm" pathspec
. Trong các ví dụ trên đây là ./*
(đệ quy bao gồm mọi thứ trong thư mục hiện tại). Trong git v2.13, hạn chế này đã được gỡ bỏ và git grep foobar -- ':!*.java'
hoạt động mà không có ./*
.
Bạn cũng có thể sử dụng một cái gì đó như :(top)
(dạng ngắn :/
:) để bao gồm mọi thứ từ đầu repo. Nhưng sau đó, có lẽ bạn cũng muốn điều chỉnh loại trừ của mình pathspec
để bắt đầu từ đầu: :/!*.java
(nếu không, nó sẽ chỉ loại trừ *.java
các tệp trong thư mục hiện tại của bạn).
Có một tài liệu tham khảo tốt cho tất cả các "từ ma thuật" được cho phép pathspec
tại git-scm.com (hoặc chỉ git help glossary
). Vì một số lý do, các tài liệu tại kernel.org thực sự đã lỗi thời mặc dù chúng thường xuất hiện đầu tiên trong các tìm kiếm của google.