Vì sao .gitignore không hoạt động?

Nguyên nhân thường là tệp đã được theo dõi, quy tắc nằm nơi khác hoặc mẫu không khớp đường dẫn như bạn nghĩ.

1. Kiểm tra Git đã theo dõi tệp chưa

Quy tắc bỏ qua áp dụng cho tệp được chủ ý để ngoài việc theo dõi. Thêm mẫu không xóa tệp từng được commit khỏi chỉ mục Git.

git ls-files -- path/to/file

Nếu lệnh in ra đường dẫn, tệp đã được theo dõi. Xem bài hướng dẫn tương ứng:

Làm sao bỏ qua tệp Git đã theo dõi?

2. Xác định quy tắc khớp

Chạy lệnh từ kho mã với đường dẫn tương đối thực tế. Kết quả chỉ ra tệp chứa quy tắc và số dòng.

git check-ignore -v -- path/to/file

Dùng --no-index khi kiểm tra tệp đã được theo dõi:

git check-ignore -v --no-index -- path/to/file

3. Kiểm tra vị trí và thứ tự mẫu

Dấu / đầu neo mẫu vào thư mục chứa .gitignore; dấu / cuối giới hạn mẫu ở thư mục. Với cùng độ ưu tiên, quy tắc khớp phía sau có thể ghi đè quy tắc trước. ! có thể đưa đường dẫn trở lại, nhưng không thể đưa lại tệp trong thư mục mà Git đã loại khỏi quá trình duyệt.

Vì sao ! không giữ được tệp trong thư mục bị bỏ qua?

4. Kiểm tra nguồn quy tắc khác

Git còn đọc .git/info/exclude và tệp toàn cục do core.excludesFile cấu hình. Tệp có thể bị bỏ qua dù .gitignore dự án không nhắc đến. Kiểm tra cấu hình toàn cục:

git config --get core.excludesFile

Vì sao tệp bị quy tắc Git toàn cục bỏ qua?

Xem tài liệu chính thức để biết hành vi chính xác và thông tin chi tiết: Tài liệu Git