إذا كان Git على جهاز Mac الخاص بك يتجاهل ملفًا، فقم بتشغيل git check-ignore -v -- 'path/to/file' من المستودع في Terminal. يحدد المخرَج مصدر التجاهل، ورقم السطر، والنمط المطابق والمسار، حتى تتمكن من العثور على القاعدة وتحديد ما إذا كنت تريد تعديلها. إذا كان الملف قيد التتبع بالفعل، فكرر الفحص باستخدام --no-index.

تشغيل الفحص من المستودع

افتح تطبيق Terminal وانتقل إلى الدليل الرئيسي (top-level) للمستودع. يمكنك كتابة cd متبوعة بمسافة، ثم سحب مجلد المشروع من Finder وإفلاته داخل نافذة Terminal لإدراج مساره، ثم الضغط على Return. تأكد من أنك داخل شجرة عمل Git باستخدام الأمر git status؛ إذا أفاد Git بأن الدليل ليس مستودعًا، فانتقل أولاً إلى مجلد مستودع المشروع الفعلي.

استخدم مسار الملف بالنسبة إلى جذر المستودع. على سبيل المثال، لتشخيص build/cache.json، قم بتشغيل:

git check-ignore -v -- 'build/cache.json'

تجعل علامات الاقتباس المفردة المسار نصًا حرفيًا بالنسبة للغلاف الافتراضي في macOS، وهو zsh. وتكون مفيدة بشكل خاص عندما يحتوي الاسم على مسافات أو أحرف مثل * التي قد يفسرها الغلاف لولا ذلك. تحدد -- نهاية الخيارات، مما يمنع أيضًا معاملة أي مسار يبدأ بفاصلة كعلامة خيار (flag).

قراءة المخرجات لتحديد موقع القاعدة

تبدو المطابقة المفصلة (verbose) على النحو التالي:

.gitignore:12:build/    build/cache.json

تعني الحقول ما يلي: .gitignore هو الملف المصدر، و12 هو رقم السطر، وbuild/ هو النمط، وbuild/cache.json هو المسار الذي استعلمت عنه. افتح هذا الملف المصدر في محرر النصوص المفضل لديك وافحص السطر المحدد. قد يكون المصدر بدلاً من ذلك ملف .gitignore متداخلًا، أو .git/info/exclude، أو ملف استثناءات عامًا (global excludes) تم تكوينه لحساب Git الخاص بك. يوثق Git حقول المخرجات المفصلة ومصادر التجاهل هذه.

ينطبق مسار المصدر الموجود ضمن .git/info/exclude على هذا المستودع، ولكنه لا يُشارك عادةً مع النسخ المستنسخة (clones) الأخرى. ينطبق ملف الاستثناءات العام على مستودعاتك الخاصة. يُعد نمط .gitignore عمومًا هو المكان المناسب للقاعدة التي يجب أن يشاركها المشروع. يتحقق Git من مصادر التجاهل حسب الأسبقية: يمكن لملفات .gitignore ذات المستوى الأدنى تجاوز قواعد الملفات الأصل (parent rules)، ويحدد آخر نمط مطابق عند نفس مستوى الأسبقية النتيجة النهائية. يشرح دليل gitignore الأسبقية والاستخدام المقصود لكل مصدر.

إذا لم يطبع Git أي شيء

عدم وجود أي مخرجات يعني عادةً عدم تطابق أي نمط تجاهل مع هذا المسار. تسرد المخرجات العادية للأمر المسارات المتجاهلة؛ استخدم -v لرؤية النمط الفاصل. تأكد من أنك في المستودع الصحيح وأن هجاء المسار وحالة الأحرف دقيقة تمامًا.

تُعد الملفات المتتبعة مصدرًا شائعًا للارتباك: افتراضيًا، لا يبلغ عنها git check-ignore لأن قواعد التجاهل تنطبق على الملفات غير المتتبعة بالفعل. أضف --no-index للطلب من Git التحقق من القواعد على أي حال:

git check-ignore -v --no-index -- 'build/cache.json'

يقوم هذا الخيار بتشخيص القاعدة؛ ولا يلغي تتبع الملف أو يزيله من الإيداع (commit). طريقة Git الموثقة لإيقاف التتبع هي git rm --cached، متبوعة بقاعدة تجاهل مناسبة. يؤدي ذلك إلى تغيير الفهرس، لذا افحص الحالة وافهم التأثير قبل تشغيله. يشرح Git قيود الملفات المتتبعة وخيار --no-index.

التحقق من علامات النفي ونطاق الأنماط

يعتبر السطر المطابق الذي يبدأ بـ ! نفيًا: يمكنه إعادة المسار إلى الظهور مرة أخرى بعد نمط تجاهل سابق، لذا فإن المطابقة المفصلة لمثل هذا السطر لا تعني أن الملف يظل متجاهلاً. لا يمكن لـ Git أيضًا إعادة تضمين ملف إذا تم استبعاد الدليل الأصل؛ يجب أولاً جعل الدليل الأصل قابلاً للمرور عبر قواعد مطابقة. تصف وثائق أنماط Git النفي وهذا القيد الخاص بالدليل الأصل.

يتم تفسير الأنماط نسبةً إلى ملف .gitignore الذي يحتوي عليها. يقتصر نطاق النمط الذي يحتوي على شرطة مائلة على مستوى دليل ذلك الملف؛ يمكن لنمط الاسم البسيط أن يتطابق على ذلك المستوى وما دونه. يهم هذا عندما تأتي قاعدة من ملف .gitignore متداخل: قد يبدو النمط المطبوع صحيحًا بينما ينطبق على شجرة فرعية مختلفة عما هو متوقع. تحقق من موقع الملف المصدر بالإضافة إلى نص النمط.

بالنسبة لملف واحد، عادةً ما يكون git check-ignore -v كافيًا لتحديد المكان الذي يجب البحث فيه. أما بالنسبة لملف متتبع، قم بتضمين --no-index؛ بعد ذلك، استخدم المصدر والسطر والنمط المبلغ عنها لتحديد ما إذا كان ينبغي تغيير القاعدة، أو تضييق نطاقها، أو تركها كما هي.

المصادر