Trình kiểm tra Gitignore
Dán quy tắc .gitignore và danh sách đường dẫn tệp của bạn để xem chính xác những tệp nào bị bỏ qua, bởi quy tắc và dòng cụ thể nào, cũng như những quy tắc phủ định bị vô hiệu ngầm do thư mục cha đã bị bỏ qua trước đó.
🔒 Được xử lý hoàn toàn trong trình duyệt của bạn — không có nội dung nào bạn nhập ở đây được tải lên.
Kết quả
"Tại sao phủ định .gitignore của tôi không hoạt động?" là một trong những câu hỏi phổ biến nhất về git, và câu trả lời trung thực hầu như luôn giống nhau: một `!pattern` cố gắng tái bao gồm một tệp bên trong thư mục đã bị quy tắc trước đó loại trừ không bao giờ có thể hoạt động, vì git không duyệt vào các thư mục bị bỏ qua để kiểm tra lại bất kỳ thứ gì bên trong. Công cụ này tái triển khai thuật toán so khớp .gitignore thực sự của git — chứ không phải một phép xấp xỉ — đặc biệt để có thể phát hiện và giải thích chính xác tình huống đó, cùng với mọi quy tắc mẫu khác mà git hỗ trợ.
Dán quy tắc .gitignore của bạn vào một ô và danh sách đường dẫn tệp (mỗi dòng một đường dẫn, như `dist/index.js`, `node_modules/foo/bar.js`, hoặc `.env`) vào ô còn lại, và công cụ sẽ đánh giá từng đường dẫn chính xác theo cách git làm: dòng chú thích và dòng trống được bỏ qua, khoảng trắng cuối dòng bị xóa trừ khi được thoát, dấu `!` ở đầu phủ định một quy tắc, dấu `/` ở đầu neo quy tắc vào thư mục gốc thay vì cho phép khớp ở mọi độ sâu, dấu `/` ở cuối giới hạn quy tắc chỉ áp dụng cho thư mục, còn `*`, `?`, lớp ký tự `[abc]` và `**` (khớp xuyên qua ranh giới thư mục) đều hoạt động theo các quy tắc glob đã được ghi nhận.
Quan trọng hơn, các đường dẫn được kiểm tra từng thư mục một từ gốc trở xuống, giống như cách công cụ bỏ qua của git hoạt động — chứ không phải kiểm tra toàn bộ đường dẫn với từng quy tắc một cách riêng lẻ. Đó chính là điều khiến việc phát hiện chính xác trường hợp phủ định chết trở nên khả thi: nếu `dist/` bị bỏ qua ở dòng 3 và một `!dist/keep.js` sau đó cố gắng cứu một tệp bên trong, công cụ này báo cáo `dist/keep.js` vẫn bị bỏ qua, chỉ ra quy tắc dòng 3 là nguyên nhân, và gắn cờ riêng phủ định là bị che khuất thay vì ngầm coi như nó đã hoạt động.
Bảng kết quả cung cấp cho mỗi đường dẫn được kiểm tra một hàng riêng với phán quyết có/không rõ ràng, chính xác nội dung quy tắc và số dòng đã quyết định, cùng — bất cứ khi nào liên quan — một ghi chú bằng ngôn ngữ tự nhiên giải thích phủ định bị che khuất hoặc quy tắc được kế thừa từ thư mục cha. Đó chính là chi tiết biến một .gitignore khó hiểu thành thứ bạn thực sự có thể lập luận trước khi commit.