مُختبر Gitignore
الصق قواعد gitignore. وقائمة بمسارات الملفات لترى بالضبط أي الملفات يتم تجاهلها، وبأي قاعدة وأي سطر بالتحديد، وأي قواعد نفي صامتة غير فعّالة لأن الدليل الأب قد تم تجاهله بالفعل.
🔒 تتم معالجتها بالكامل في متصفحك — ولا يتم تحميل أي شيء تدخله هنا على الإطلاق.
النتيجة
"لماذا لا يعمل النفي في gitignore. لديّ؟" هو أحد أكثر أسئلة git شيوعًا، والإجابة الصادقة هي نفسها غالبًا: نمط `!` يحاول إعادة تضمين ملف داخل دليل تستبعده قاعدة سابقة لا يمكن أن يعمل أبدًا، لأن git لا ينزل إلى الأدلة المُتجاهَلة لإعادة التحقق من أي شيء بداخلها. هذه الأداة تُعيد تنفيذ خوارزمية مطابقة gitignore. الفعلية لـ git — وليست تقريبًا — لتتمكن تحديدًا من التقاط وشرح هذا الموقف بالضبط، بالإضافة إلى كل قاعدة نمط أخرى يدعمها git.
الصق قواعد gitignore. في مربع، وقائمة بمسارات الملفات (واحد في كل سطر، مثل `dist/index.js`، `node_modules/foo/bar.js`، أو `.env`) في المربع الآخر، وستُقيّم الأداة كل مسار تمامًا كما يفعل git: يتم تخطي التعليقات والأسطر الفارغة، وتُزال المسافات اللاحقة ما لم تكن مُهربة، علامة `!` البادئة تنفي القاعدة، الشرطة المائلة `/` البادئة تُثبّتها على الجذر بدلًا من السماح لها بالمطابقة على أي عمق، الشرطة المائلة `/` اللاحقة تقصرها على الأدلة، و `*`، `?`، فئات الأحرف `[abc]` و `**` (التي تطابق عبر حدود الأدلة) تعمل جميعًا وفق قواعد الأنماط العامة المُوثَّقة.
والأهم، يتم التحقق من المسارات دليلًا بدليل من الجذر إلى الأسفل، بنفس الطريقة التي يعمل بها محرك التجاهل في git نفسه — وليس باختبار المسار الكامل مقابل كل قاعدة على حدة. هذا ما يجعل من الممكن اكتشاف حالة النفي الميت بشكل صحيح: إذا تم تجاهل `dist/` في السطر 3 وحاولت قاعدة `!dist/keep.js` لاحقًا إنقاذ ملف واحد بداخله، تُبلغ هذه الأداة عن `dist/keep.js` على أنه ما زال مُتجاهَلًا، وتُسمّي قاعدة السطر 3 كسبب، وتُعلّم بشكل منفصل حالة النفي على أنها مُظلَّلة بدلًا من التظاهر الصامت بأنها نجحت.
يُعطي جدول النتائج كل مسار مُختَبَر صفًا خاصًا به مع حكم واضح بنعم/لا للتجاهل، ونص القاعدة ورقم السطر المحددَين اللذين حسما الأمر، و — كلما كان ذلك مناسبًا — ملاحظة بلغة واضحة تشرح نفيًا مُظلَّلًا أو قاعدة موروثة من دليل أب. هذا هو التفصيل الذي يُحوّل ملف gitignore. المُربك إلى شيء يمكنك التعامل معه بثقة قبل الـ commit.