مشکل کجاست؟

فرض کنید در یک تیم فنی ۲ نفر مشغول به کار هستند. یکی از اون ها سیستم عامل مک داره و یکی دیگه ویندوز. یکیشون از نرم افزارهای JetBrains استفاده میکنه و دیگری از VSCode. حالا اگر بخوایم نیازمندی های این دو نفر رو در نظر بگیریم باید به چنین فایلی برسیم:

.vscode/
.idea/

.DS_Store
Thumbs.db

.env
bin/
build/

مدیریت و بررسی چنین فایل طولانی در تیم های بزرگ و پروژه های سنگین بسیار دشوار و پر دردسره چون یه سازمان/تیم نمیتونه نیازمندی های تمام افراد خودش رو در این فایل پوشش بده بلکه هر فرد مسئول مدیریت این موارد برای خودشه. فایل مورد نظر ما باید چنین باشه:

.env
bin/
build/

راه حل

ما در هر پروژه یک فایل محلی gitignore. داریم که تغییرات اون روی پروژه اعمال میشه. حالا اگر یک فایل سراسری داشته باشیم که نیازمندی های خودمون رو داخلش قرار بدیم کار تیمی خیلی بهتر و تمیز تر انجام میشه. برای مثال خودم به شخصه عادت دارم فایل های مربوط به توسعه محلی یک پروژه در پوشه ای به نام dev ذخیره بشه پس دیگه نیازی نیست داخل هر پروژه از تیم این پوشه Ignore بشه.

برای این سناریو ما میتونیم یک فایل gitignore. سراسری برای کل سیستم داشته باشیم. ابتدا یه فایل برای این کار بسازید. این فایل میتونه هرجا از سیستم عامل شما باشه ولی برای اینکه بعدا هم راحت تر به سراغش برید و مسیرش رو گم نکنید پیشنهاد میکنم در مسیر Home سیستم عامل باشه.

# MacOS / Linux
~/.gitignore

# Windows
%USERPROFILE%\.gitignore

پس از اینکه فایل ایجاد شد اطلاعات مورد نیاز خودتون رو بنویسید. برای مثال:

.DS_Store
.vscode

در نهایت باید این فایل رو به Git معرفی کنید. برای این کار از دستور زیر استفاده کنید:

# MacOS / Linux
git config --global core.excludesfile ~/.gitignore

# Windows
git config --global core.excludesfile %USERPROFILE%\.gitignore

و تمام! از حالا به بعد دیگه نیاز نیست Commit های اضافی و فایل های gitignore. شلوغ و غیر کاربردی داشته باشیم.