Có sự khác biệt giữa www, www/và www/*.
Về cơ bản, từ tài liệu và các bài kiểm tra của riêng tôi, wwwtìm thấy sự trùng khớp với một tệp hoặc một thư mục, www/chỉ khớp với một thư mục, trong khi www/*khớp với các thư mục và tệp bên trong www.
Tôi sẽ chỉ thảo luận về sự khác biệt giữa www/và www/*ở đây, vì sự khác biệt giữa wwwvà www/là rõ ràng.
Đối với www/, git bỏ qua wwwchính thư mục , có nghĩa là git thậm chí sẽ không nhìn vào bên trong. Nhưng đối với www/*, git sẽ kiểm tra tất cả các tệp / thư mục bên trong wwwvà bỏ qua tất cả chúng bằng mẫu *. Nó dường như dẫn đến kết quả tương tự vì git sẽ không theo dõi một thư mục trống wwwnếu tất cả các tệp / thư mục con của nó bị bỏ qua. Và thực sự kết quả sẽ không có gì khác biệt đối với trường hợp của OP với www/hoặcwww/* độc lập. Nhưng nó sẽ tạo ra sự khác biệt nếu nó được kết hợp với các quy tắc khác.
Ví dụ, nếu chúng ta muốn chỉ bao gồm www/1.txtmà bỏ qua tất cả những thứ khác bên trong wwwthì sao?
Sau đây .gitignoresẽ không hoạt động.
www/
!www/1.txt
Trong khi những điều sau đây .gitignorehoạt động, tại sao?
www/*
!www/1.txt
Đối với trước đây, git chỉ bỏ qua thư mục wwwvà thậm chí sẽ không nhìn vào bên trong để bao gồm www/1.txtlại. Quy tắc đầu tiên loại trừ thư mục mẹ wwwnhưng không loại trừwww/1.txt và kết quả là www/1.txtkhông thể " bao gồm lại ".
Nhưng đối với phần sau, git đầu tiên bỏ qua tất cả các tệp / folers dưới www , và sau đó bao gồm lại một trong số chúng www/1.txt.
Đối với ví dụ này, các dòng sau trong tài liệu có thể giúp:
Tiền tố tùy chọn "!" mà phủ định mẫu; bất kỳ tệp phù hợp nào bị loại trừ bởi mẫu trước đó sẽ được đưa vào lại. Không thể bao gồm lại tệp nếu thư mục mẹ của tệp đó bị loại trừ.
binvàbin/là cái trước sẽ bỏ qua tệp hoặc thư mục, cái sau chỉ là những thư mục. Tôi không biết sự khác biệt vớibin/*