چرا نباید همهچیز را commit کنیم؟
در هر پروژه فایلهایی وجود دارند که نباید وارد تاریخچهی گیت شوند: فایلهای موقت، کش کامپایلر، پوشهی محیط مجازی پایتون، فایلهای تنظیمات شخصی ویرایشگر، یا مهمتر از همه، فایلهای حاوی رمز عبور و کلید API. برای مدیریت این موضوع، گیت از فایلی به نام .gitignore استفاده میکند که در ریشهی پروژه قرار میگیرد.
نمونهای از یک فایل .gitignore برای یک پروژهی جنگو:
__pycache__/
*.pyc
venv/
.env
db.sqlite3
staticfiles/
.vscode/
*.log
هر خط یک الگو تعریف میکند: *.pyc یعنی همهی فایلهای با پسوند pyc، و venv/ یعنی کل پوشهی venv نادیده گرفته شود. اگر فایلی از قبل بهاشتباه commit شده باشد، فقط اضافه کردنش به .gitignore کافی نیست؛ باید آن را از تاریخچهی ردیابیشده هم حذف کنید:
git rm --cached secrets.env
git commit -m "حذف فایل حساس از ردیابی گیت"
نکتهی امنیتی مهم: اگر یک رمز عبور یا کلید مخفی وارد تاریخچهی گیت شود، فقط حذف فایل در commit بعدی کافی نیست، چون آن مقدار همچنان در commitهای قدیمیتر باقی میماند. در چنین شرایطی باید هم کلید را باطل و جایگزین کرد و هم در صورت نیاز از ابزارهایی برای پاکسازی تاریخچه استفاده کرد. به همین دلیل بهتر است از همان ابتدای پروژه فایل .gitignore درستی داشته باشیم.