Menu
flag Ar iconالعربيةdown icon

مولّد .gitignore

أنشئ ملف .gitignore نظيفاً لأي بنية — لغات وأطر و IDE وأنظمة تشغيل.

آخر تحديث

مجموعات سريعة
اختر القوالب2 محدّد

اللغات

أطر العمل

المحرّرات و IDE

أنظمة التشغيل

.gitignore · 37 أسطر
# Node.js
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
.pnpm-store/
.npm
.yarn-integrity

# Coverage
coverage/
*.lcov
.nyc_output

# Build output
dist/
build/

# Environment
.env
.env.local
.env.*.local

# macOS
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

ما هو مولّد .gitignore؟

كل مستودع Git يحتاج إلى ملف .gitignore. هو القائمة النصية للمسارات التي **لا يجب** على Git تتبّعها — مخرجات البناء، مجلّدات الاعتماديات، إعدادات IDE، فضلات نظام التشغيل مثل .DS_Store. بدونه يَسحب أول كومِت لك بطريق الخطأ node_modules/ و .env و target/، وتنظيف هذه الفوضى أكثر إزعاجاً من ضبط الملف من البداية.

كل منظومة تتجاهل أشياء مختلفة، ومعظم المشاريع تجمع عدّة منها معاً. تطبيق Node + TypeScript نموذجي على macOS مع VS Code يحتاج أصلاً إلى اتحاد أربع قوائم تجاهل مختلفة. كتابة هذا من الذاكرة تعني نسيان coverage/، أو تسريب .env، أو إدخال .idea/ تابع لزميل يستخدم JetBrains.

لذلك يجمع هذا المولّد قوالب منقّحة من المشروع المرجعي github/gitignore — نفس المصدر الذي تستخدمه اقتراحات GitHub الرسمية — ويسمح لك بتركيبها معاً. أشّر المربعات، ويُخرِج لك أداةً واحدةً .gitignore مُزال التكرار تلصقها مباشرةً في المستودع. لا حسابات ولا تحميل، كل شيء داخل المتصفح.

ما تتعلّمه أثناء بناء .gitignore

  • أنماط .gitignore تستخدم صياغة glob: *.log تتجاهل كل ملف log، و build/ تتجاهل مجلداً، و !important.log تعيد تضمين ملف معيّن حتى لو طابقه glob.
  • تُطبَّق الأنماط نسبةً إلى موقع ملف .gitignore.gitignore داخل src/ يؤثّر فقط على الملفات تحت src/.
  • الملفات المتعقّبة سابقاً **لا تُتجاهَل بأثر رجعي**. إذا كومِتّ node_modules/ ثم أضفته إلى .gitignore، تحتاج أيضاً إلى git rm -r --cached node_modules لإلغاء تتبّعه.

كيف تولّد .gitignore خطوة بخطوة

  1. اختر إعداداً مسبقاً سريعاً (اختياري)

    إذا كان مشروعك يطابق توليفة شائعة — Next.js أو Django أو Rails — انقر إعداداً مسبقاً لتأشير كل المربعات ذات الصلة دفعةً واحدة. ثم أضف أو احذف القليل بحسب الحاجة.

  2. أضف لغاتك

    لكل لغة مخرجاتها التي تُتجاهَل: Node فيها node_modules/، Python فيها __pycache__/ والبيئات الافتراضية، Java فيها target/ و .class. اختر اللغات التي يُجَمّع مشروعك فعلاً.

  3. أضف أطر العمل

    فوق قواعد اللغة، تضيف أطر العمل مجلّدات بنائها الخاصة: Next.js يريد .next/ و .vercel، Django يريد staticfiles/ و db.sqlite3، Rails يريد tmp/ و /storage/*. أشّر ما تستخدمه.

  4. أضف المحرّرات وأنظمة التشغيل

    أضف قوالب المحرّرات التي يستخدمها **الفريق** (لا أنت فقط) — إن كان أحد ما يستخدم JetBrains أو Vim، ضمِّنها. ثم أضف أنظمة تشغيل الفريق: macOS يترك .DS_Store، وWindows يترك Thumbs.db، وكلاهما يسهل كومِته من غير قصد.

  5. انسخ أو نزّل

    تُظهر اللوحة اليمنى المخرج المدمج ومُزال التكرار. انقر **انسخ** لتلصقه مباشرةً في .gitignore بجذر المستودع، أو **نزّل** لحفظ الملف مباشرة.

صياغة .gitignore — مرجع سريع

الأنماط التي ستكتبها أكثر. المرجع الكامل: git-scm.com/docs/gitignore.

النمطالمعنىمثال
node_modulesتجاهل ملفاً أو مجلداً بهذا الاسم في أي مكان من الشجرةيلتقط /node_modules و src/node_modules معاً
node_modules/شرطة في النهاية — يطابق **مجلداً** فقط، لا ملفاً بنفس الاسملا يلتقط ملفاً سُمِّي بـ node_modules خطأ
/buildشرطة في البداية — يثبّت إلى دليل .gitignore فقطيلتقط /build لا src/build
*.logGlob — يلتقط أي ملف ينتهي بـ .logيلتقط error.log و debug.log و logs/foo.log
!important.logنفي — يُعيد تضمين ملف التقطته قاعدة سابقةادمجه مع *.log لإبقاء ملف log واحد متعقّباً
docs/**/draftنجمة مزدوجة — تلتقط draft في أي مجلّد فرعي تحت docs/تلتقط docs/v1/draft و docs/2025/q1/draft
# commentتعليق — يتجاهل Git السطور التي تبدأ بـ #اجمع القواعد بعناوين أقسام مثل # Node.js

أمثلة .gitignore للتجربة

.gitignore أدنى لـ Node.js + macOS

ما يحتاجه كل مشروع Node على Mac

# Node.js node_modules/ npm-debug.log* dist/ .env .env.local # macOS .DS_Store ._*

الحد الأدنى لأي مشروع Node مُشارَك مع زميل على macOS. حتى مشروع جانبي صغير يجب أن يمتلك هذه القواعد — بدون .DS_Store و node_modules/ ستحارب تعارضات بلا معنى.

Python + Django + JetBrains

مكدّس Python خادمي شائع

# Python __pycache__/ *.py[cod] .venv .pytest_cache/ # Django *.log local_settings.py db.sqlite3 media/ staticfiles/ # JetBrains .idea/ *.iml

خلفية Django نموذجية مطوَّرة في PyCharm. لاحظ تجاهل db.sqlite3 المحلي — لا يستعمله الإنتاج، وكومِته يسرّب بيانات التطوير ويُعطب النسخ الجديدة لدى الزملاء.

تجاوز قاعدة بنفي

تجاهل كل السجلّات إلا واحداً

*.log !keep-me.log

السطر الأول يتجاهل كل .log. قاعدة !keep-me.log تُعيد تضمين هذا الملف بالذات. النفي لا يعمل إلا للملفات التي تجاهلتها قاعدة سابقة — لا يمكنك إعادة تضمين ملف داخل مجلّد متجاهَل.

أخطاء شائعة في .gitignore

  • إضافة .gitignore بعد فوات الأوان وتوقّع اختفاء الملفات المكومَتة. لا تختفي — تحتاج إلى git rm -r --cached <مسار> لإلغاء تتبّعها.
  • كومِت ملف .env ولو مرّةً واحدة. كومِت واحد يُبقي السر في تاريخ المستودع للأبد. أضف .env* إلى .gitignore **قبل** أول كومِت، ودوّر أي سر تسرّب.
  • نسيان ضوضاء نظام التشغيل في المستودعات المشتركة. إن كان زميل واحد على macOS والمستودع بلا قاعدة .DS_Store، ستظهر هذه الملفات في كل diff لطلب سحب.

أسئلة شائعة — مولّد .gitignore

من أين تأتي قوالب .gitignore هذه؟
اشتُقَّت القوالب من مشروع المصدر المفتوح github/gitignore — وهو نفسه المصدر الذي يستخدمه GitHub حين تختار «إضافة .gitignore» عند إنشاء مستودع. قلّصنا كلّ قالب إلى القواعد التي تحتاجها الفرق فعلاً وجمعناها في فئات.
هل أكومِت ملف .gitignore نفسه؟
نعم. .gitignore مُعَدّ لكي يُدار بنظام النسخ ويُشارَك مع الفريق. هو *العقد* حول ما يُتعقَّب وما لا يُتعقَّب. الاستثناء هو التفضيلات الشخصية (مثل اختيار محرّرك) — تذهب إلى ~/.gitignore_global العام لديك.
كيف ألغي تتبّع ملف كومِته من قبل؟
أضفه أولاً إلى .gitignore، ثم نفّذ git rm --cached <مسار> (أو git rm -r --cached <مجلد>) لإزالته من الفهرس دون حذفه من القرص. كومِت التغييرَين معاً ليرى زملاؤك التحديث.
هل يمكنني وضع عدة ملفات .gitignore في مستودع واحد؟
نعم. يبحث Git عن .gitignore في كل دليل ويُطبّق القواعد على ذلك الشجيرة الفرعية. مفيد في monorepos حيث للواجهة الأمامية والخلفية قواعد تجاهل مختلفة جداً — قواعد مشتركة في الجذر وقواعد لغوية في كل حزمة.
ما الفرق بين .gitignore و .git/info/exclude؟
.gitignore يُكومَت ويُشارَك مع الفريق. أما .git/info/exclude فيعيش فقط في نسختك المحلية ويُستخدم لاستثناءات شخصية لا تريد دفعها. للاستثناءات عبر كل مستودعاتك، استخدم ~/.gitignore_global العام.

أدوات مطورين أخرى

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن