منشئ ملفات gitignore

أنشئ ملف .gitignore بتحديد اللغات والأطر والمحررات التي تستخدمها — Node.js وPython وJava وmacOS وWindows وVS Code والمزيد، بدون تكرار وجاهز للتنزيل.

232 مشاهدة

كيف تعمل

حدّد المربعات التي تنطبق على مشروعك — لغة أو بيئة تشغيل مثل Node.js أو Python أو Java، نظام تشغيل مثل macOS أو Windows أو Linux، محرر مثل VS Code أو IntelliJ/JetBrains، بالإضافة إلى ملفات Git الفائضة الخاصة بها وكتلة مخصصة لـ.env والأسرار. كل مربع يضيف مجموعة صغيرة وراسخة من أنماط التجاهل المستمدة من الأعراف التي يستخدمها المجتمع فعليًا — node_modules/ لـNode، __pycache__/ و.venv/ لـPython، *.class وtarget/ لـJava، .DS_Store لـmacOS، Thumbs.db لـWindows، وهكذا. كلما حددت مربعات أكثر، تدمج الأداة كل شيء في قائمة واحدة، وتحذف التكرارات المطابقة تمامًا، وتعرض النتيجة مباشرة في مربع نص يمكنك نسخه أو تنزيله مباشرة كملف باسم .gitignore.

سبب دمج الفئات بدلًا من كتابة واحدة من الصفر هو أن معظم المشاريع الحقيقية تتقاطع مع عدة فئات في آنٍ واحد: واجهة برمجة تطبيقات Node.js تُطوَّر على جهاز Mac باستخدام VS Code تحتاج إلى كتلة Node لملفات البناء، وكتلة macOS حتى لا يتسلل .DS_Store إلى طلب سحب (pull request)، وكتلة VS Code حتى لا تطغى إعدادات محررك الشخصية على إعدادات زميلك. تحديد الثلاث كلها وتنزيلها مرة واحدة أسرع وأقل عرضة للخطأ من تجميع الأنماط يدويًا من الذاكرة أو نسخ أجزاء من مشاريع قديمة.

ما يجب معرفته

ملف .gitignore يؤثر فقط على الملفات التي لا يعرفها Git بعد — فهو يخبر Git بأي الملفات غير المتتبَّعة يجب استبعادها من git status وgit add . والالتزامات (commits) المستقبلية. ليس له أي تأثير على الملفات المتتبَّعة بالفعل (التي التُزم بها مرة واحدة على الأقل). هذا هو مصدر الالتباس الأكثر شيوعًا: إضافة .env إلى .gitignore بعد التزامها مسبقًا لا يزيلها من المستودع ولا يوقف Git عن تتبع تغييراتها اللاحقة. لإلغاء تتبع ملف فعليًا، عليك أولًا تشغيل git rm --cached <file> (الذي يزيله من فهرس Git لكنه يتركه على القرص)، ثم الالتزام بهذه الإزالة، وعندها فقط تسري قاعدة .gitignore المطابقة على المستقبل.

معظم الأنماط المقدمة هنا ترجع إلى مستودع GitHub الرسمي github/gitignore، المصدر الأكثر رجوعًا إليه للقوالب الخاصة باللغات والأدوات، وهي نفس المجموعة التي يقدمها GitHub نفسه عند إنشاء مستودع جديد عبر واجهته على الويب. إبقاء مجلدات الاعتماديات مثل node_modules/ ومخرجات البناء مثل dist/ أو target/ خارج التحكم بالإصدار مهم من ناحية الحجم — فهذه المجلدات يمكن أن تفوق بسهولة حجم كودك المصدري الفعلي عدة مرات، وتُعاد توليدها بسهولة من ملف قفل (lockfile) أو نص بناء — بينما إبقاء ملفات مثل .env و*.pem و*.key خارجًا مهم من ناحية الأمان: التزام سر ما في تاريخ Git يجعله علنيًا فعليًا إلى الأبد، لأن حذفه من آخر التزام لا يمحوه من الالتزامات السابقة دون إعادة كتابة التاريخ بالكامل.

الأسئلة الشائعة

أضفت ملفًا إلى .gitignore لكن Git ما زال يتتبعه — لماذا؟

.gitignore يمنع Git فقط من تتبع الملفات التي لا يعرفها بعد. إذا كان الملف قد التُزم به قبل إضافة القاعدة، يستمر Git في تتبعه بغض النظر عمّا يقوله .gitignore. أصلح ذلك بتشغيل git rm --cached <file> (أو git rm -r --cached <folder> لمجلد)، ثم التزم بهذا التغيير — من تلك اللحظة تسري قاعدة .gitignore.

هل يمكنني الجمع بين عدة فئات، مثل Node.js وmacOS وVS Code معًا؟

نعم — هذا هو الاستخدام المعتاد. حدّد كل مربع ينطبق على إعدادك، وتدمج الأداة كل الأنماط الناتجة في قائمة واحدة، وتزيل التكرارات المطابقة تمامًا حتى لا يظهر السطر نفسه مرتين أبدًا.

من أين تأتي أنماط التجاهل هذه؟

تتبع نفس أعراف مستودع قوالب GitHub الرسمي github/gitignore، المرجع القياسي الذي تشير إليه معظم الأدوات والدروس التعليمية. هذه هي نفس أنماط الملفات/المجلدات التي كنت ستحصل عليها لو ولّدت قالبًا عبر خيار "Add .gitignore" الخاص بـGitHub عند إنشاء مستودع.

لماذا يجب ألا يُلتزم بـnode_modules/ أو .env أبدًا؟

node_modules/ هو ذاكرة تخزين مؤقت للاعتماديات يمكن إعادة توليدها من package.json/package-lock.json خلال ثوانٍ — الالتزام بها يُضخّم المستودع بميغابايتات (أحيانًا غيغابايتات) من الملفات الزائدة. أما .env فمختلف: يحتوي عادةً على مفاتيح API أو كلمات مرور قواعد بيانات أو أسرار أخرى، وبمجرد وصول سر إلى تاريخ Git يجب اعتباره مخترقًا، لأن حذفه من آخر التزام لا يزيله من الالتزامات السابقة — إعادة كتابة التاريخ (وتدوير السر) هي الحل الفعلي الوحيد.

هل يجب إعادة تسمية الملف المُنزَّل؟

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

التعليقات

لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!

أدوات مشابهة