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 tin ngoại trừ đối với những phù hợp với *.java
bạn có thể làm:
git grep foobar -- './*' ':(exclude)*.java'
Hoặc sử dụng !
"hình thức ngắn" cho loại trừ:
git grep foobar -- './*' ':!*.java'
Lưu ý rằng 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).
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 đó bạn có thể cũng muốn điều chỉnh loại trừ của mình pathspec
để bắt đầu từ trên cùng: :/!*.java
(nếu không nó sẽ chỉ loại trừ *.java
tệp từ trong thư mục hiện tại của bạn).
Có một tham chiếu tốt cho tất cả "từ ma thuật" được phép trong một số pathspec
tại git-scm.com (hoặc chỉ git help glossary
). Vì lý do nào đó, tài liệu tại kernel.org thực sự lạc hậu ngay cả khi chúng thường xuất hiện đầu tiên trong các tìm kiếm trên google.
Làm điều đó trên bash sẽ là cách giải quyết khả thi: http://stackoverflow.com/questions/216995/how-can-i-use-inverse-or-negative-wildcards-when-pattern-matching-in-a -unix-linu –
Tính năng này đã được thêm vào trong 1.9.0 [xem câu trả lời của tôi bên dưới] (/ a/30084612/436287) – onlynone