2010-03-19 11 views
52

Làm cách nào để thêm nội dung nào đó vào số .gitignore để khớp không được đệ quy?Làm cách nào để thêm một thứ gì đó vào .gitignore để khớp không được đệ quy?

Ví dụ: tôi muốn bỏ qua thư mục foo và tệp bar.txt trong thư mục hiện tại, nhưng không phải bất kỳ thư mục nào tồn tại trong thư mục con.

Tôi đã thử này cho file .gitignore tôi:

foo/ 
bar.txt 

Nhưng tiếc là git áp dụng này một cách đệ quy, do đó otherdir/bar.txtotherdir/foo/ cũng được bỏ qua, mà không phải là những gì tôi muốn.

(Có một câu lệnh trong git mà tôi thấy tất cả các file bỏ qua, và tham khảo các tập tin .gitignore đó là chịu trách nhiệm cho các tập tin bị bỏ qua? Đây sẽ là hữu ích để gỡ lỗi.)

Trả lời

91

Giải pháp là đặt một slash hàng đầu trên .gitignore mục:

/foo/ 
/bar.txt 

(tôi nghĩ tôi đã cố gắng này trước khi gửi bài trên StackOverflow, nhưng rõ ràng tôi đã không thử nó đúng, vì điều này hoạt động hoàn hảo.)

+0

Có thể bạn đã thử điều này và có một số khoảng trắng đầu/cuối ở đâu đó được báo cáo là gây ra sự cố với .gitignore. Ai biết được, một trong hai cách câu hỏi này đã giúp tôi ra ngoài lol –

11

Từ gitig nore manpage:

Tiền tố tùy chọn! phủ nhận mẫu; bất kỳ tệp trùng khớp nào bị loại trừ bởi mẫu trước đó sẽ được bao gồm lại. Nếu một mẫu phủ định phù hợp, mẫu này sẽ ghi đè các nguồn mẫu có mức ưu tiên thấp hơn.

Vì vậy, !* làm dòng đầu tiên trong .gitignore của bạn sẽ xóa tất cả các mẫu trước đó.

+0

Ok, rõ ràng là tôi đã làm mọi thứ trong một thời trang phức tạp hơn mọi lúc:] 1 cho câu trả lời cắt giảm hàng đầu, không thể upvote được nêu ra. – hermannloose

+0

+1 để bạn có thể upvote bây giờ :) Ngoài ra, tôi không biết về! tiếp đầu ngữ. –