guide

إعداد ملف gitignore عام (core.excludesFile)

كيفية ضبط core.excludesFile لتجاهل ملفات بيئتك الشخصية، مثل .DS_Store في macOS وملفات المحرر، في جميع المستودعات، والمسار الافتراضي.

ملفات مثل .DS_Store وThumbs.db و.idea/workspace.xml و*.swp لا تنشأ بسبب المشروع، بل بسبب حاسوبك ومحررك. ملف gitignore العام هو المكان الذي تكتب فيه هذه القواعد مرة واحدة بدلًا من تكرارها في كل مستودع.

المسار الافتراضي

حتى من دون أي إعداد يقرأ git الملف التالي بوصفه قائمة التجاهل العامة.

أي أن إنشاء الملف ~/.config/git/ignore يكفي في معظم بيئات macOS وLinux.

mkdir -p ~/.config/git
printf '.DS_Store\n*.swp\n.idea/workspace.xml\n' >> ~/.config/git/ignore

لاستخدام ملف آخر: core.excludesFile

لاستخدام ملف في المسار الذي تريده اضبط core.excludesFile. عند ضبط هذه القيمة يقرأ git ذلك الملف بدلًا من المسار الافتراضي.

# macOS / Linux
git config --global core.excludesFile ~/.gitignore_global

# Windows (PowerShell)
git config --global core.excludesFile "$env:USERPROFILE\.gitignore_global"

تحقّق من الإعداد بالأمر التالي.

git config --global --get core.excludesFile

إن لم يظهر أي ناتج فالقيمة غير مضبوطة ويُستخدم المسار الافتراضي أعلاه.

ما الذي يوضع في الملف العام

يناسب الملفَ العام الملفاتُ الشخصية التي تنشأ بالطريقة نفسها أيًّا كان المشروع.

النوعأمثلةالقالب المقترح
نظام التشغيل.DS_Store، ._*، Thumbs.db، desktop.ini، *~macOS، Windows، Linux
الحالة الشخصية للمحرر/بيئة التطوير*.swp، .idea/workspace.xml، الملفات الشخصية في .vscode/*Vim، JetBrains، VisualStudioCode
أدوات شخصية.envrc (direnv)، مجلد ملاحظات شخصيةاكتبها بنفسك

إذا اخترت في المولّد قوالب مثل macOS وJetBrains فقط ونسخت النتيجة، فيمكن استخدامها مباشرة محتوى للملف العام.

وفي المقابل، مخرجات البناء ومجلدات الاعتماديات والملفات السرية توضع في ملف .gitignore الخاص بالمشروع لا في الملف العام، لأن هذه القواعد يجب أن تنطبق على كل من يستنسخ المستودع.

حدود الاعتماد على الملف العام

ينطبق ملف gitignore العام على حاسوبك فقط. إذا لم يضبطه زميلك فقد يُضاف ملف .DS_Store الخاص به في commit. لذلك يقترح مستودع قوالب GitHub نفسه الطريقتين معًا: وضع قوالب Global في الملف العام أو دمجها في قوالب المشروع.

عمليًّا، يصلح المعيار التالي.

الأولوية

للملف العام أدنى أولوية بين مصادر القواعد الأربعة. حتى لو تجاهل الملف العام *.log، فإن !keep.log في ملف .gitignore الخاص بالمشروع هو الذي يفوز. وإذا التبس عليك أي قاعدة طُبّقت فشغّل git check-ignore -v <المسار>. إذا ظهر مسار الملف العام في بداية الناتج فالقاعدة العامة هي التي حسمت الأمر.

المراجع

← السابقأولوية قواعد gitignore وأنماط النفي (!)