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, www
tì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 www
và www/
là rõ ràng.
Đối với www/
, git bỏ qua www
chí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 www
và 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 www
nế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.txt
mà bỏ qua tất cả những thứ khác bên trong www
thì sao?
Sau đây .gitignore
sẽ không hoạt động.
www/
!www/1.txt
Trong khi những điều sau đây .gitignore
hoạt động, tại sao?
www/*
!www/1.txt
Đối với trước đây, git chỉ bỏ qua thư mục www
và thậm chí sẽ không nhìn vào bên trong để bao gồm www/1.txt
lại. Quy tắc đầu tiên loại trừ thư mục mẹ www
nhưng không loại trừwww/1.txt
và kết quả là www/1.txt
khô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ừ.
bin
và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/*