.gitignore

چه زمانی از gitignore استفاده میشود؟

چه زمانی از gitignore استفاده میشود؟

در این مقاله قرار است با فایل و قوانین gitignore. آشنا شویم و طریقه استفاده از آن ها را بیاموزم.

زمانی که یک کامیت یا (Commit) در مخزن گیت ایجاد میشود، میتوان با دستور git add FILENAME فایل هایی را که طبقه بندی و کامیت شده اند را انتخاب کرد. سپس نیاز است که دستور git commit را وارد شود.

 

درصورتیکه نیاز به کامیت کردن بعضی از فایل ها در git repository نباشد ، باید چکار کرد؟

 

میتوان به راحتی آنها را به صورت رندوم و تصادفی کامیت کرد.(مخصوصا اگر از دستور . git add برای طبقه بندی تمام فایل ها در دایرکتوری جاری استفاده شده باشد).در این حالت با استفاده از فایل gitignore. میتوان به گیت فهماند که باید بعضی از فایل های مشخص شده را نادیده (ignore) بگیرد و آنها را ردیابی نکند.

چه نوع فایل هایی را باید ignore کرد ( نادیده گرفت) ؟

 

  • فایل های Log
  • فایل هایی با کلید یا رمز های API ، مدارک و اطلاعات حساس
  • فایل های بلا استفاده سیستمی، مثل DS_Store . در سیستم عامل مک (MacOs)
  • فایل های Generate یا ایجاد شده مثل پوشه های dist
  • پکیج هایی که میتوانند از طریق package manager یا مدیریت کننده پکیج ها دانلود شوند.
  • فایل های کوچک todo .md

gitignore. چگونه کار میکند؟

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

الگو های موجود در فایل ها وابسته به موقعیت فایل های gitignore. طراحی میشوند.

نام فایل های Literal یا اصلی

آسان ترین الگو، نام اصلی فایل (literal file name) است .

برای مثال:

.DS_Store

 

این دستور تمام فایل هایی را که نام آنها DS_Store . (یک فایل رایج در سیستم عامل مک) ignore میکند.

Directories یا دایرکتوری ها

با وارد کردن مسیر دایرکتوری ها و اضافه کردن یک / در آخر آن ، میتوانید تمام دایرکتوری ها را ignore کنید:

node_modules/ logs/

 

اگر علامت اسلش (/) را در آخر قرار دهید ، فایل ها و دایرکتوری ها با همان اسم match یا تطبیق داده میشوند.

Wildcard یا کاراکتر جایگزین

 

کاراکتر * با 0 و یا بیشتر کاراکترها ، به جز / مطابقت دارد. برای مثال ، log.* با هر فایلی که با افزونه log. تمام میشه مطابقت دارد و کاراکترهای ~* ، با فایل هایی که با ~ تمام میشوند ، مطابقت دارد. مانند:

Index.html~

همچنین می توانید از کاراکتر ؟ استفاده کنید که به جز / ، با همه کاراکترها مطابقت دارد .

Negation یا خنثی سازی

می توانید برای خنثی سازی فایلی که قرار است ignore شود ، از پیشوند ! استفاده کنید.

*.log !example.log

 

در این مثال example.log ، هنوز ignore نشده . حتی اگر بقیه فایل ها به همراه log. تمام و ignore شده باشند.

حواستان باشد که شما نمیتوانید یک فایل را در داخل دایرکتوری ignore ، خنثی سازی کنید.

logs/ !logs/example.log

 

 

با توجه به دلایل عملکرد ، چون تمام دایرکتوری های Logs در حالت ignore هستند، گیت در اینجا همچنان Logs/example.log را ignore میکند.

 

Double Asterisk یا ستاره دوتایی (**)

 

** میتواند برای مطابقت با بینهایت دایرکتوری استفاده شود.

  • logs/** با تمام فایل ها یا دایرکتوری هایی که نامشان logs است ، مطابقت دارد. (مانند الگوی Logs)
  • logs/*.log/** با تمام فایل هایی که در دایرکتوری logs با logs. تمام می شوند ، مطابقت دارد.
  • logs/**/*.log با تمام فایل هایی که در دایرکتوری logs و زیر شاخه هایش با logs. تمام می شوند ، مطابقت دارد.

** میتواند برای مطابقت دادن تمام فایل های درون یک دایرکتوری استفاده شود، برای مثال **/logs با تمام فایل های درون logs تطبیق داده میشود.

کامنت ها

هر خطی که با کاراکتر # شروع شود یک کامنت محسوب میشود:

# macOS Files .DS_Store

 

قوانین شخصی gitignore.

 

از زمانی که فایل gitignore. در مخزن یا repository چک میشود ، اگر میخواهید بعضی از فایل ها را بدون اضافه کردن به مخزن شخصی gitignore. ، نادیده بگیرید ، چند گزینه برای شما وجود دارد. برای مثال ، ممکن است شما یک سری فایل های خاص برای انجام یک پروژه خاص داشته باشید ، یا ممکن است از ویرایشگر متفاوتی نسبت به هم تیمی هایتان استفاده کنید و همیشه بخواهید این نوع فایل ها را ignore کنید.

قوانین مخزن محلی gitignore.

اگر چند فایل است که میخواهید فقط در این مخزن ignore شود، میتوانید آنها را در git/info/exclude. قرار دهید.

قوانین جهانی gitignore.

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

در ابتدا باید با دستور زیر، تنظیماتی را به گیت اضافه کنید:

git config –global core.excludesFile ~/.gitignore

 

سپس می توانید هر قوانین جهانی را به gitignore./~ اضافه کنید.

در صورتی که از قبل قوانین را چک کرده اید باید چکار کنید؟

اگر از قبل قوانین را کامیت کرده اید ، گیت آن را ignore نمیکند. شما اول باید فایل را ردیابی کنید و سپس شروع به Ignore کردن آن کنید.با دستور زیر می توانید فایل را ردیابی کنید:

git rm –cached FILENAME

 

Debugging یا اشکال زدایی

اگر در ignore کردن مشکلی دارید می توانید با استفاده از دستور git check-ignore command دلیل آن را به صورت کلامی یا حالت ویس پیدا کنید.

git check-ignore -v example.log

 

و در خروجی تقریبا چنین چیزی را خواهید دید:

.gitignore:1:*.log example.log

 

در این مثال ، فایل gitignore. موجود در ریشه پروژه باعث میشود که example.log بتواند ignore شود و الگوی موجود در خط اول log.* باعث ignore شدن آن میشود.

 

بستن