افحص مسارًا باستخدام أنماط .gitignore
اعرف ما إذا كان Git سيتجاهل ملفاً وأي قاعدة تحسم ذلك: يُتجاهل logs/build.log بسبب *.log، وهي القاعدة الثانية في القائمة، ويمكن لقاعدة لاحقة مثل !important.log أن تلغي قاعدة سابقة. مجاناً في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- الأنماط
- dist/, *.log, !important.log, secrets/**
- المسار
- logs/build.log
- النمط المطابق
- *.log
- الفهرس المطابق
- 1
تحقق من مسار نسبي إلى المستودع بمقارنته مع قائمة مرتبة من أنماط .gitignore، من دون إنشاء مستودع مؤقت أو تشغيل Git. توضح النتيجة ما إذا كان المسار متجاهلًا، وتحدد عند تطابق قاعدة آخر نمط حاسم وموضعه الذي يبدأ من الصفر. يدعم الفاحص التعليقات والمحارف المهروبة والقواعد المثبتة عند الجذر وقواعد المجلدات والمحارف البديلة وفئات المحارف والنجمتين المتكررتين والنفي. كما يرفض الأنماط سيئة الصياغة بدل معاملتها بصمت على أنها نصوص حرفية غير مؤثرة.
قدّم القواعد بترتيبها الفعلي
ليس ملف .gitignore مجرد مجموعة من أنماط glob المستقلة. يقيّم Git القواعد بالترتيب، وقد تغيّر قاعدة لاحقة متطابقة القرار الذي اتخذته قاعدة سابقة. أرسل الأنماط بالترتيب نفسه الذي تظهر به في ملف التجاهل المعني.
تجعل الأنماط العادية المتطابقة المسار متجاهلًا، بينما تلغي القاعدة التي تبدأ بعلامة تعجب غير مهروبة ذلك القرار. لا تُعامل الأسطر الفارغة والأسطر التي تبدأ بعلامة شباك غير مهروبة بوصفها قواعد، كما يحدث في ملف التجاهل المعتاد. تتضمن الاستجابة آخر نمط متطابق وفهرسه في المصفوفة ابتداءً من الصفر، مما يتيح لك تفسير نتيجة مفاجئة في أداة بناء أو محرر إعدادات.
يجب أن تكون المسارات نسبية إلى جذر المستودع وأن تستخدم الشرطات المائلة. يمنع المسار الثابت والمطبّع اختلاف الإجابة للملف نفسه بسبب بادئة مطلقة أو مقطع دليل أب أو فواصل خاصة بنظام التشغيل.
تعرّف إلى سلوك المطابقة المدعوم
تطابق النجمة الواحدة أي عدد من المحارف داخل مقطع واحد من المسار، وتطابق علامة الاستفهام محرفًا واحدًا غير الشرطة المائلة. تثبّت الشرطة المائلة في البداية القاعدة عند جذر المستودع. يمكن للنمط الذي لا يحتوي على شرطة مائلة مطابقة اسم في أي عمق؛ وإذا كان ذلك الاسم يمثل مجلدًا في المسار المقدم، فسيشمل كل ما تحته أيضًا.
تعبّر الشرطة المائلة في النهاية عن قاعدة مجلد. ولأن الفاحص يتلقى مسارًا لا شجرة ملفات، فإنه يقرر اعتمادًا على نص المسار وأسلافه، ولا يفحص ما إذا كان المكوّن الأخير موجودًا فعلًا كملف أو مجلد. تظل علامات الشباك والتعجب المهروبة في البداية حرفية، وتُحذف المسافات النهائية غير المهروبة وفق أعراف ملفات التجاهل.
استخدم التحقق لاكتشاف عيوب الإعداد
يسهل إغفال أخطاء glob عندما ينمو ملف التجاهل عبر تعديلات صغيرة كثيرة. يبلغ هذا الفاحص عن إدخال غير صالح عند وجود بنى معيبة، مثل فئة محارف غير مغلقة أو فارغة، أو محرف هروب معلّق، أو علامة نفي بلا تعبير. لا تعدّل الاستجابة الناجحة القواعد ولا تعتمد على خدمة شبكة أو الوقت الحالي أو قيمة عشوائية أو محتويات المستودع أو نظام تشغيل المضيف.
لذلك تناسب فحوص ما قبل الإيداع الحتمية ونماذج الويب وتشخيصات IDE واختبارات السياسات في CI.
حالات الاستخدام
تفسير غياب مدخل للبناء
اختبر المسار الغائب وفق قواعد تجاهل المشروع واعرض القاعدة الأخيرة المسؤولة عن استبعاده.
التحقق من محرر ملفات التجاهل
عاين كيف يغيّر ترتيب قاعدة أو إضافة نفي جديد النتيجة قبل حفظ الإعداد.
فرض سياسة المستودع في CI
تأكد من تجاهل المخرجات المولدة مع بقاء التجهيزات وملفات المصدر المطلوبة قابلة للتتبع.
الأسئلة الشائعة
هل يؤثر ترتيب القواعد؟
نعم. تُقيّم كل قاعدة بالترتيب، وتحدد آخر قاعدة متطابقة ما إذا كان المسار متجاهلًا.
هل يدعم الفاحص الأنماط المنفية؟
نعم. تنشئ علامة التعجب غير المهروبة في البداية قاعدة نفي يمكنها إظهار مسار جرى تجاهله سابقًا.
هل يقرأ الفاحص مستودعي أو إعداد Git العام؟
لا. يستخدم فقط الأنماط والمسار النسبي إلى المستودع المقدمين في الطلب.
هل تستطيع الأنماط عبور عدة مجلدات؟
نعم. تستطيع أنماط النجمتين عبور حدود المجلدات، بينما تبقى النجمة الواحدة ضمن مقطع واحد.
كيف أعرف القاعدة التي حسمت النتيجة؟
تذكر الإجابة آخر قاعدة مطابقة وموضعها في قائمتك بدءاً من 0. في المثال يُتجاهل logs/build.log بسبب *.log في الموضع 1، مما يسهّل تفسير أي نتيجة غير متوقعة.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev2/gitignore-check-path \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"patterns":["dist/","*.log","!important.log"],"path":"logs/build.log"}'const res = await fetch("https://api.kit.forhosting.com/dev2/gitignore-check-path", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"patterns": [
"dist/",
"*.log",
"!important.log"
],
"path": "logs/build.log"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/gitignore-check-path",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"patterns": [
"dist/",
"*.log",
"!important.log"
],
"path": "logs/build.log"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/gitignore-check-path", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"patterns":["dist/","*.log","!important.log"],"path":"logs/build.log"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"patterns":["dist/","*.log","!important.log"],"path":"logs/build.log"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/gitignore-check-path", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"patterns": [
"dist/",
"*.log",
"!important.log"
],
"path": "logs/build.log"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.gitignore_check_path",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_patterns | 1000 |
max_pattern_chars | 1024 |
max_path_chars | 4096 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تعرّف إلى سلوك المطابقة المدعوم
تختار فئات المحارف مثل `[0-9]` محرفًا واحدًا من مجموعة أو نطاق. تستطيع النجمتان عبور حدود المجلدات، ولذلك يشمل النمط `docs/**/draft*.md` المسودات الموجودة مباشرة تحت `docs` وتلك الموجودة في مجلدات أعمق.
استخدم التحقق لاكتشاف عيوب الإعداد
كما يحد عدد الأنماط وطولها كي لا يتحول endpoint التحقق إلى عمل ترجمة غير محدود. عند دمجها في الأتمتة، احتفظ بالحقل `matching_pattern` إلى جانب القرار المنطقي، لأن تفسير السبب غالبًا ما يكون أنفع من القيمة المنطقية وحدها. يشغّل إصدار المتصفح المحلل النقي نفسه الذي تستخدمه API، بينما يطبق طلب API السعر الأساسي المنشور $0.002.
أسئلة تقنية
ماذا يحدث إذا كان النمط سيئ الصياغة؟
يفشل الطلب بخطأ invalid_input يحدد موضع النمط والمشكلة البنيوية.
ما كلفة طلب API؟
السعر الأساسي هو $0.002 لكل طلب. يتوفر المحلل الحتمي نفسه في المتصفح أيضًا.