فایل gitignore چیست و چگونه فایل‌های پروژه را نادیده بگیریم
آموزش

فایل gitignore چیست و چگونه فایل‌های پروژه را نادیده بگیریم

فایل gitignore به گیت اعلام می‌کند کدام فایل‌ها و پوشه‌های جانبی را بدون ثبت تغییرات نادیده بگیرد تا مخزن پروژه تمیز و سبک بماند.

تحریریه‌ی دینا کد
نویسنده
۶ دقیقه مطالعه۰ بازدید
اشتراک گذاری۰
فهرست مطالب
  1. ۱فایل gitignore چیست و چه کاربردی دارد
  2. ۲قواعد و الگوهای نوشتن در gitignore
  3. ۳یک نمونه واقعی از تنظیم gitignore
  4. ۴اشتباه رایج درباره فایل‌های از قبل ردیابی‌شده
  5. ۵قدم بعدی

وقتی پروژه‌ای را می‌سازید و اولین بار دستور git status را اجرا می‌کنید، ده‌ها فایل تولیدشده توسط مفسر، پکیج‌منیجر یا محیط توسعه در فهرست فایل‌های ردیابی‌نشده ظاهر می‌شوند. اگر به اشتباه این موارد را کامیت کنید، حجم مخزن به سرعت بالا می‌رود، اطلاعات محرمانه نظیر کلیدهای اتصال به دیتابیس به اشتراک گذاشته می‌شوند و اعضای دیگر تیم با تداخل‌های مداوم روبه‌رو خواهند شد. راه‌حل بنیادین گیت برای این مسئله، استفاده از فایلی متنی به نام gitignore. است.

فایل gitignore چیست و چه کاربردی دارد

فایل gitignore. یک فایل متنی ساده در مسیر پروژه است که به گیت فرمان می‌دهد چه مسیرها، پسوندها یا پوشه‌هایی را در فرایند ردیابی و استیج نادیده بگیرد. هر خط از این فایل نمایانگر یک الگوی تطبیق است.

گیت پیش از افزودن فایل‌ها به محدوده تغییرات، محتوای این فایل را می‌خواند. فایل‌های نادیده‌گرفته‌شده در خروجی git status ظاهر نمی‌شوند و دستور عمومی git add . نیز آن‌ها را به مخزن اضافه نمی‌کند.

بر اساس مستندات رسمی گیت، سه سطح برای نادیده گرفتن فایل‌ها وجود دارد:

۱. فایل gitignore. در ریشه پروژه: این فایل باید در مخزن کامیت شود تا تمام اعضای تیم از قوانین یکسانی برای فایل‌های کامپایل‌شده و پکیج‌ها تبعیت کنند.
۲. فایل info/exclude. در شاخه git.: قوانینی که فقط به روند کار شخص شما روی یک مخزن خاص مربوط است و نیازی به اشتراک‌گذاری عمومی ندارد در این مسیر نوشته می‌شود.
۳. تنظیم سراسری core.excludesFile: این بخش معمولاً در مسیر config/git/ignore. سیستم عامل ذخیره می‌شود و برای ابزارهای شخصی سیستم شما مانند تنظیمات ادیتور یا فایل‌های مخفی سیستم عامل کاربرد دارد.

قواعد و الگوهای نوشتن در gitignore

برای نوشتن الگوها در این فایل، گیت قواعد استانداردی را بر پایه الگوهای مسیر ارائه می‌دهد:

  • خط خالی نادیده گرفته می‌شود و برای فاصله‌گذاری مناسب است.
  • خطی که با علامت # شروع شود کامنت در نظر گرفته می‌شود.
  • علامت ستاره (*) با هر رشته‌ای از کاراکترها به جز اسلش تطبیق داده می‌شود.
  • دو ستاره متوالی (**) برای تطبیق با مسیرهای تو در تو در هر عمقی استفاده می‌شود؛ مثلاً الگوی foo/**/bar تمام مسیرهای بین این دو پوشه را پوشش می‌دهد.
  • علامت اسلش در ابتدای الگو مسیر را به همان دایرکتوری محدود می‌کند؛ مثلاً build/ فقط پوشه build در ریشه را هدف می‌گیرد، در حالی که build بدون اسلش، هر پوشه‌ای با این نام را در هر عمقی نادیده می‌گیرد.
  • علامت تعجب (!) الگو را برعکس می‌کند؛ به این معنی که اگر فایلی با قوانین قبلی نادیده گرفته شده باشد، دوباره به ردیابی بازگردانده می‌شود.

یک نکته فنی مهم در مستندات گیت وجود دارد: اگر یک پوشه والد به صورت کامل نادیده گرفته شود، استفاده از علامت تعجب روی فایل‌های درون آن کار نخواهد کرد؛ زیرا گیت برای حفظ سرعت، اصلاً وارد پوشه‌های نادیده‌گرفته‌شده نمی‌شود.

یک نمونه واقعی از تنظیم gitignore

فرض کنید یک پروژه جاوااسکریپت یا وب دارید. در ریشه مخزن فایلی با نام gitignore. بسازید و محتوای زیر را در آن قرار دهید:

text# نادیده گرفتن وابستگی‌های پروژه
node_modules/
vendor/

# فایل‌های محیطی و اطلاعات محرمانه
.env
.env.local
*.pem

# فایل‌های خروجی فرآیند ساخت
dist/
build/
*.log

# فایل‌های موقت سیستم عامل و ویرایشگر
.DS_Store
.vscode/
!.vscode/settings.json

اگر فایل تست test.log را بسازید و دستور وضعیت را اجرا کنید:

bashgit status

خروجی به این صورت خواهد بود و هیچ نامی از test.log یا پوشه‌های کامپایل مشاهده نخواهید کرد:

textOn branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	.gitignore

nothing added to commit but untracked files present (use "git add" to track)

اشتباه رایج درباره فایل‌های از قبل ردیابی‌شده

بزرگ‌ترین اشتباهی که افراد مرتکب می‌شوند این است که ابتدا فایلی را کامیت می‌کنند و سپس نام آن را داخل gitignore. می‌نویسند. قانون طلایی گیت این است: فایلی که قبلاً ردیابی و کامیت شده باشد، با نوشتن در gitignore. نادیده گرفته نمی‌شود.

اگر فایلی را به اشتباه ثبت کرده‌اید و اکنون می‌خواهید بدون حذف فیزیکی از روی دیسک، آن را از ردیابی گیت خارج کنید، از دستور زیر استفاده کنید:

bashgit rm --cached filename

این دستور فایل را در حافظه استیج برای حذف از تاریخچه بعدی علامت‌گذاری می‌کند اما نسخه فیزیکی آن در پوشه کاری شما باقی می‌ماند. پس از اجرای آن، الگوی مربوطه را در gitignore. قرار دهید و وضعیت جدید را کامیت کنید.

قدم بعدی

نادیده گرفتن فایل‌های زائد اولین گام برای نگهداری یک مخزن حرفه‌ای است. برای یادگیری ساختار داخلی گیت، مدیریت شاخه‌ها، بازگردانی تغییرات و ابزارهای تیمی، دوره گیت و گیت‌هاب تعاملی تمام این مفاهیم را در قالب محیط تمرین عملی آموزش می‌دهد.

تحریریه‌ی دینا کد
نویسنده

نظرها

اولین نفری باشید که نظر می‌دهد
برای ثبت نظر وارد شوید

سؤالتان را بپرسید یا تجربه‌تان را بنویسید تا نویسنده‌ی مطلب پاسخ بدهد.

مطالب مرتبط

از همین دسته
دستور GROUP BY در SQL چطور کار می‌کند
آموزش

دستور GROUP BY در SQL چطور کار می‌کند

عملکرد دستور GROUP BY در SQL و نحوه گروه‌بندی سطرها به همراه توابع تجمیعی را با مثال‌های واقعی یاد بگیرید.

تحریریه‌ی دینا کد۵ دقیقه
کلید اصلی و کلید خارجی در SQL
آموزش

کلید اصلی و کلید خارجی در SQL

راهنمای تعریف کلید اصلی و کلید خارجی در SQL برای تضمین یکتایی سطرها و حفظ یکپارچگی ارجاعی داده‌ها.

تحریریه‌ی دینا کد۶ دقیقه