كيفية استخدام .gitignore: مقدمة عملية مع أمثلة

عند العمل مع Git، الحفاظ على مستودعك نظيفًا ومنظمًا ليس مجرد ممارسة جيدة – بل هو أمر أساسي للتعاون السلس وضبط الإصدارات بكفاءة. هنا تأتي .gitignore للعب دورها. هذا الملف المفيد يخبر Git بالملفات التي يجب تجاهلها، مما يمنع الفوضى غير الضرورية ويجعل التزاماتك تركز على ما هو مهم حقًا.

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

في هذا البرنامج التعليمي، ستتعلم كيفية إنشاء واستخدام ملف .gitignore للحفاظ على مشروعك منظمًا، وتجنب الأخطاء الشائعة، والعمل بكفاءة أكبر مع Git. هيا بنا!

ما هو ملف .gitignore؟

ملف .gitignore هو ملف تكوين يُستخدم في Git لتوجيه نظام ضبط الإصدارات حول الملفات أو الدلائل التي يجب تجاهلها عندما تُرحل التغييرات أو تُرتكب.

يمنع وجود الملفات غير الضرورية – مثل الملفات المؤقتة أو المنشأة من النظام أو المتعلقة بالبناء – من فوضى مستودعك. الحفاظ على مستودعك نظيفًا يجعل التعاون أسهل ويضمن تتبع الملفات الأساسية فقط.

يعتبر ملف .gitignore ملف نصي بسيط يوضع في الدليل الرئيسي لمستودع Git الخاص بك. يحتوي على أنماط تُخبر Git بالملفات أو الدلائل التي يجب تجاهلها. يمكن تخصيص هذه الأنماط لتتناسب مع احتياجات مشروعك، مما يساعدك على الحفاظ على مستودع منظم بشكل جيد.

هل أنت جديد على Git وGitHub؟ احصل على مقدمة ودية للمبتدئين حول التحكم في الإصدارات باستخدام هذا البرنامج التعليمي عن GitHub وGit.

إليك بعض الفئات الشائعة للملفات والدلائل التي يجب عليك التفكير في تجاهلها:

  • ملفات إخراج البناء: ملفات تم إنشاؤها أثناء عملية البناء والتي يمكن إعادة إنشاؤها من رمز المصدر، مثل:
    • dist/, build/ (مخرجات بناء الواجهة الأمامية والخلفية)
    • target/ (بناء لغة جافا ولغات مترجمة أخرى)
  • الاعتماديات: أنظمة إدارة الحزم تنشئ دلائل للمكتبات المثبتة، والتي يجب ألا تُتبع:
    • node_modules/ (Node.js)
    • vendor/ (PHP، Composer)
    • .venv/, venv/ (بيئات Python الظاهرية)
  • ملفات محددة للنظام: تم إنشاؤها تلقائيًا بواسطة نظام التشغيل ولا تُساهم في المشروع:
    • .DS_Store (نظام macOS)
    • Thumbs.db (نظام Windows)
  • ملفات تكوين بيئة التطوير: قد يستخدم كل مطور بيئة تطوير مختلفة، لذلك يجب عدم تضمين إعداداتهم الشخصية في نظام التحكم في الإصدارات:
    • .vscode/ (VS Code)
    • .idea/ (بيئات تطوير JetBrains)
    • .project, .settings/ (Eclipse)
  • سجلات وملفات مؤقتة: يجب تجاهل السجلات والذاكرات المؤقتة والملفات المؤقتة لمنع تشويش غير ضروري:
    • *.log, npm-debug.log*, yarn-debug.log*, yarn-error.log* (سجلات من أدوات مختلفة)
    • *.tmp, *.bak (ملفات مؤقتة ونسخ احتياطية)
    • .mypy_cache/, __pycache__/ (مخازن بيانات Python)
    • .ipynb_checkpoints/ (نقاط تفتيش دفتر Jupyter)
  • ملفات بيئة وسرية: يجب عدم تضمين بيانات الاعتماد الحساسة وتكوينات تخصيص البيئة في التزامن:
    • .env, .env.local, .env.development, .env.production
    • secrets.json, config.json (ملفات تكوين حساسة)
  • ملفات قاعدة البيانات والتخزين: تتم إنشاؤها محليًا ويجب عدم تضمينها في التحكم في الإصدارات:
    • *.sqlite, *.sqlite3, *.db (ملفات قاعدة بيانات SQLite)
    • dump.rdb (نسخة احتياطية لقاعدة بيانات Redis)
  • ملفات CI/CD والتغطية: يجب تجاهل تقارير تغطية الاختبارات وغيرها من آفاق CI/CD:
    • coverage/, *.lcov (تقارير تغطية الشفرة)
    • .tox/, .pytest_cache/ (ملفات اختبار Python)

هل تحتاج إلى تثبيت Git؟ اتبع دليلنا خطوة بخطوة في هذا البرنامج التعليمي لتثبيت Git للحصول على الإعداد بسرعة.

صيغة .gitignore

كما هو مذكور، تحتوي ملفات .gitignore على أنماط يتم مطابقتها مع أسماء الملفات في مستودعك لتحديد ما إذا كان يجب تجاهلها أم لا.

الصيغة الأساسية

في جوهره، يتكون ملف .gitignore من أسطر، تمثل كل منها نمطًا يجب تجاهله. يمكن أن تطابق الأنماط:

  • الملفات المحددة
  • أنواع الملفات
  • المجلدات

يدعم الملف أيضًا التعليقات، والتي يمكن إضافتها عن طريق بدء السطر بـ #، والأسطر الفارغة لتحسين القراءة.

ها هو نظرة عامة على الهيكل الأساسي:

  • تجاهل ملف محدد: يمكنك قائمة اسم الملف مباشرة لتجاهله.
secrets.txt
  • تجاهل دليل بأكمله: عن طريق إضافة / في نهاية اسم الدليل، يمكنك تجاهل كل شيء داخل ذلك الدليل.
logs/
  • تجاهل جميع الملفات من نوع معين:يمكن استخدام الرموز المرقونة (*) لتجاهل جميع الملفات ذات الامتداد المحدد.
*.py
  • النفي: يمكنك استخدام ! لنفي نمط وتعقب بشكل صريح بعض الملفات أو الدلائل التي ستتم تجاهلها خلافاً لذلك.
*.txt # Ignores all .txt files !readme.txt # Except for readme.txt

كيفية إنشاء واستخدام ملف .gitignore

إنشاء واستخدام .gitignore بسيط جدًا. في هذا القسم، سأقوم بشرح الخطوات.

إنشاء ملف .gitignore

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

cd /path/to/your/repo

الخطوة 2: إنشاء ملف .gitignore. بمجرد الوصول إلى الدليل الرئيسي، قم بإنشاء ملف .gitignore باستخدام أي محرر نصوص أو عن طريق تشغيل أمر في الطرفية، مثل:

touch .gitignore

الخطوة 3: إضافة أنماط إلى الملفافتح ملف .gitignore في محرر نصوص وأضف الأنماط اللازمة لتجاهل الملفات أو الدلائل. تمثل كل سطر نمطًا مختلفًا.

إليك مثال على ملف .gitignore يُستخدم عادة في مشروع أساسي:

# تجاهل مجلد node_modules والمجلدات الخاصة بالتبعيات node_modules/ vendor/ # تجاهل ملفات البناء dist/ build/ *.log # تجاهل الملفات التي تم إنشاؤها من النظام .DS_Store Thumbs.db # تجاهل الملفات البيئية والملفات السرية .env config.json

بمجرد أن تقوم بإضافة الأنماط اللازمة، احفظ الملف. سيقوم Git الآن بتجاهل هذه الملفات تلقائيًا عند مرحلة أو تأكيد التغييرات.

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

git add .gitignore git commit -m "Add .gitignore file" git push

بمجرد تأكيد ملف .gitignore، ستنشئ قواعد تجاهل مشتركة لفريق العمل بأكمله.

هل ترغب في اتقان عمليات الدفع والسحب في Git؟ تعرف على كيفية مزامنة عملك مع مستودعات البعد عن بعد في هذا البرنامج التعليمي للدفع والسحب في Git.

أفضل الممارسات لاستخدام ملف .gitignore

أثناء إنشاء ملف .gitignore، تعتبر هذه جزءاً مباشراً من الحفاظ على مستودع Git نظيف، ويجب اتباع عدة ممارسات جيدة لضمان إدارة الملف بفعالية مع مرور الوقت.

استخدم .gitignore على مستوى عالمي

بالنسبة للمطورين العاملين عبر عدة مشاريع، هناك ملفات معينة قد ترغب في استبعادها من كل مستودع، بغض النظر عن نوع المشروع.

بدلاً من إضافتها إلى ملف .gitignore لكل مشروع، يمكنك تكوين .gitignore على مستوى عالمي ينطبق على جميع المستودعات على نظامك.

لتكوين ملف .gitignore على مستوى عالمي:

  • أنشئ ملف .gitignore_global:
touch ~/.gitignore_global
  • أضف أنماطًا للملفات التي تريد تجاهلها على نطاق عالمي، مثل:
.DS_Store *.log /.vscode/ /.idea/
  • قم بتعيين Git لاستخدام .gitignore العام:
git config --global core.excludesfile ~/.gitignore_global

استفد من القوالب الموجودة

بدلاً من بناء ملف .gitignore من البداية لكل مشروع جديد، يمكنك استغلال القوالب المعدة مسبقًا لـ .gitignore للغات أو الأطر الزمنية أو البيئات المحددة.

واحدة من أفضل الموارد لهذه القوالب هي مستودع .gitignore الرسمي لـ GitHub، حيث يمكنك العثور على ملفات .gitignore مصممة خصيصًا لمئات لغات البرمجة والأطر الزمنية.

قم بمراجعة .gitignore بانتظام

مع تطور المشاريع، قد تحتاج إلى تضمين ملفات ودلائل جديدة في ملف .gitignore. من المهم مراجعة وتحديث الملف بانتظام ليعكس الحالة الحالية لمشاريعك.

بعض السيناريوهات التي قد تحتاج فيها إلى تحديث ملف .gitignore تشمل:

  • اعتماد أدوات أو مكتبات جديدة تولد ملفات إضافية (مثل التبديل إلى نظام بناء جديد).
  • إعادة هيكلة أو إعادة تنظيم الدلائل، مما قد يؤدي إلى ظهور ملفات جديدة يجب استبعادها.
  • إزالة الملفات أو الدلائل القديمة التي لم تعد جزءًا من المشروع.

حل مشكلات .gitignore

حتى بعد إعداد ملف .gitignore، قد تواجه سيناريوهات حيث يتم تتبع ملفات محددة، أو لا تبدو الأنماط تعمل كما هو متوقع. ستغطي هذا القسم مناطق اثنين شائعة لحل المشكلات وكيفية حلها.

تتبع الملفات التي تمت تعهدتها بالفعل

ملف .gitignore لا ينطبق بصورة رجعية على الملفات التي تم تعهدها بالفعل.

إذا قمت بإضافة نمط إلى .gitignore بعد أن تم تعهد بعض الملفات بالفعل، سيستمر Git في تتبعها على الرغم من أنها تتطابق مع النمط في ملف .gitignore.

لوقف تتبع الملفات التي تمت تعهدها بالفعل، اتبع هذه الخطوات:

  • قم بإزالة الملفات من تتبع Git:استخدم أمر git rm لإزالتها من المستودع مع الاحتفاظ بها في دليل العمل الخاص بك.
git rm --cached <file_or_directory_name>
  • قم بتأكيد التغييرات:بعد إزالة الملفات من تتبع Git، قم بتأكيد التغييرات للتأكد من أن الملفات لم تعد جزءًا من تاريخ التحكم بالإصدار.
git commit -m "Stop tracking ignored files"
  • قم برفع التغييرات إلى المستودع البعيد: في النهاية، قم برفع التغييرات إلى المستودع البعيد للتأكد من أن الملفات لم تعد تُتبع.
git push

بعد أداء هذه الخطوات، سيتوقف Git عن تتبع الملفات. سيظل الملف المؤكد في دليل العمل الخاص بك ولكنه سيتم تجاهله في المستقبل بناءً على أنماط .gitignore الخاصة بك.

تأكد من أن أنماط العمل 

في بعض الأحيان، قد تلاحظ أن الملفات المحددة التي كنت تتوقع تجاهلها لا تزال تظهر في حالة Git أو يتم تتبعها.

اتبع هذه الخطوات للتأكد من أن أنماط .gitignore الخاصة بك تعمل بشكل صحيح:

  • تحقق من حالة ملفاتك: استخدم أمر git status لرؤية الملفات التي يتم تتبعها بواسطة Git. سيساعدك ذلك في التحقق مما إذا كانت الملفات المتجاهلة لا تزال مدرجة.
git status
  • تأكد من صحة النمط:قم بالتحقق المزدوج من صياغة أنماط ملف .gitignore لضمان تنسيقها بشكل صحيح. على سبيل المثال:
    • تأكد من استخدام المسار الصحيح للدليل (نسبيًا لجذر المستودع).
    • أضف / لاستهداف الدلائل المحددة لمنع تتبع جميع الملفات ذات الأسماء المماثلة.
  • قم بتحديث الذاكرة المؤقتة: إذا قمت مؤخرًا بتحديث ملف .gitignore الخاص بك ولم يتم تطبيق التغييرات، فقد يكون Git محتفظًا بالذاكرة المؤقتة السابقة. لتحديث الذاكرة المؤقتة، قم بتشغيل الأمر التالي:
git rm -r --cached . git add . git commit -m "Refresh .gitignore"
  • تحقق من الاستثناءات:في بعض الأحيان، يمكن أن يتم تجاوز نمط معين في ملف .gitignore بنمط أكثر تحديدًا في مكان آخر في الملف. قم بمراجعة قواعدك للتأكد من عدم وجود أنماط تتعارض.

هل تبحث عن مرجع سريع لـ Git؟ احتفظ بالأوامر الأساسية بأطراف أصابعك باستخدام ورقة غش Git هذه.

الاستنتاج

قد يبدو ملف .gitignore صغيرًا، ولكنه يلعب دورًا هائلاً في الحفاظ على نظافة مستودع Git الخاص بك وسهولة إدارته. من خلال تجاهل الملفات غير الضرورية—مثل التبعيات وملفات البناء والملفات التي تم إنشاؤها من النظام—تضمن أن يبقى مشروعك منظمًا وخاليًا من الفوضى.

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

إذا كنت تبحث عن تعميق مهارات Git الخاصة بك، تحقق من Git Fundamentals لمسار تعليمي منظم. يمكنك أيضًا استكشاف الدورات التطبيقية مثل Foundations of Git و Introduction to GitHub Concepts لبناء فهم قوي لنظام التحكم في النسخ وتدفقات التعاون!

Source:
https://www.datacamp.com/tutorial/gitignore