guide

قواعد تجاهل خاصة بك عبر .git/info/exclude

كيفية كتابة قواعد شخصية تخص مستودعًا واحدًا في .git/info/exclude من دون تعديل .gitignore، ومتى يفيد ذلك، وما أولويته.

يُضاف ملف .gitignore في commit ويُشارَك مع الجميع. لكن أحيانًا توجد ملفات تريد أنت وحدك تجاهلها في هذا المستودع فقط: ملاحظات شخصية، سكربتات تجريبية، مجلدات تنشئها إضافات محررك. لهذا الغرض يوجد .git/info/exclude.

أين يوجد

ينشئ git init أو git clone الملف .git/info/exclude تلقائيًّا. وهو ملف فارغ لا يحتوي إلا على بضعة أسطر من التعليقات.

cat .git/info/exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# ...

ولأنه داخل المجلد .git فلا يُضاف في commit ولا يصل إلى أحد عند push. وصياغته مطابقة تمامًا لصياغة .gitignore. لمعرفة موقعه الدقيق، بما في ذلك عند استخدام عدة worktree، شغّل git rev-parse --git-path info/exclude.

متى يُستخدم

الحالةأمثلةالموضع المقترح
ملفات شخصية تُستخدم في هذا المستودع فقطnotes.md، scratch/، todo.txt.git/info/exclude
ملفات شخصية مشتركة بين كل المستودعات.DS_Store، *.swpملف gitignore العام
قواعد يحتاجها الفريق كلهnode_modules/، dist/، .env.gitignore

يفيد ذلك خصوصًا عند المساهمة في مستودع شخص آخر. إذا عدّلت ملف .gitignore الخاص بالمشروع لحجب ملفات تنشئها أدواتك، فقد لا يرغب المراجعون في هذا التغيير. أما الكتابة في .git/info/exclude فلا تمس سجل الـ commit.

echo 'scratch/' >> .git/info/exclude
echo '.my-plugin-cache/' >> .git/info/exclude
git status   # they no longer appear

الأولوية

بين مصادر القواعد يقع .git/info/exclude تحت .gitignore وفوق الملف العام.

  1. أنماط سطر الأوامر
  2. .gitignore (ملفات المجلدات الفرعية تتغلب على الملفات الأعلى)
  3. .git/info/exclude
  4. core.excludesFile

لذلك لا يمكن إعادة تضمين ملف يتجاهله .gitignore بقاعدة ! في .git/info/exclude. وعند التحقق فعليًّا:

# .gitignore        : x
# .git/info/exclude : !x
$ git check-ignore -v x
.gitignore:1:x	x

ملاحظات

المراجع

← السابقإعداد ملف gitignore عام (core.excludesFile)