غالباً، هنگام کار برروی پروژههایی که از Git استفاده میکنند، این موقعیت پیش میآید که بخواهید از انتقال فایلهای خاص یا دایرکتوریهای خاصی به مخزن ریموت یا همان سرور جلوگیری کنید.
فایل gitignore. مشخص میکند که چه فایلهایی را Git باید نادیده بگیرد.
این مطلب نیز ممکن است برای شما مفید باشد: گیت برای مبتدیان
چه فایلهایی را باید نادیده گرفت؟
فایلهای نادیده گرفته شده، معمولاً فایلهایی با پلتفرم مخصوص یا فایلهای بهصورت خودکار ایجاد شده، هستند. برخی از نمونههای رایج عبارتند از:
- فایلهای زمان اجرا، مانند گزارش، قفل، حافظه پنهان یا فایلهای موقتی.
- فایلهایی با اطلاعات حساس، مانند گذرواژهها یا کلیدهای API.
- کد کامپایل شده، مانند class. یا o.
- دایرکتوریهای وابستگی، مانند vendor/ یا node_modules/.
- دایرکتوریهای Build، مانند public، /out/، یا dist/.
- فایلهای سیستم، مانند DS_Store. یا Thumbs.db
- فایلهای پیکربندی IDE یا ویرایشگر متن.
الگوهای gitignore
فایل gitignore.، یک فایل متنی ساده است که در آن، هر خط شامل یک الگو برای نادیده گرفتن فایلها یا دایرکتوریها است.
gitignore. از الگوهای globbing برای تطابق نام فایلها با کاراکترهای wildcard استفاده میکند. اگر فایلها یا دایرکتوریهای حاوی الگوی wildcard دارید، میتوانید برای جلوگیری از تطابق فایل با الگو، از یک کاراکتر \ استفاده کنید.
کامنتها
خطوطی که با علامت هش (#) شروع میشوند، کامنت هستند و نادیده گرفته میشوند. خطوط خالی را میتوان برای بهبود خوانایی فایل و گروه بندی مربوط به خطوط الگوها استفاده کرد.
اسلش
نماد اسلش (/) نمایانگر جداکننده دایرکتوری است. اسلش در ابتدای یک الگو، مربوط به دایرکتوری شامل gitignore. میباشد.
اگر الگوی مربوطه با یک اسلش شروع شود، تنها دایرکتوریها و فایلهای داخل root مخزن را مطابقت میدهد.
اگر الگوی مربوطه با یک اسلش شروع نشود، فایلها و دایرکتوریهای هر دایرکتوری و زیردایرکتوری را مطابقت میدهد.
اگر الگوی مربوطه با یک اسلش پایان یابد، فقط دایرکتوریها را مطابقت میدهد. دقت کنید که هنگامیکه یک دایرکتوری نادیده گرفته میشود، تمام فایلها و زیرشاخههای آن نیز نادیده گرفته میشوند.
این مطلب نیز ممکن است برای شما مفید باشد: push کردن به چند مخزن در گیت
نام دقیق فایلها
سادهترین الگو، استفاده از نام دقیق یک فایل و بدون کاراکترهای خاص است.
الگو | نمونههای تطابق |
---|---|
/access.log |
access.log |
access.log |
access.log logs/access.log var/logs/access.log |
build/ |
build |
نمادهای Wildcard
* - نماد ستاره، با صفر یا چندین کاراکتر مطابقت دارد.
الگو | نمونههای تطابق |
---|---|
*.log |
error.log logs/debug.log build/logs/error.log |
* * - نماد دو ستاره مجاور، با هر فایل یا صفر یا چندین دایرکتوری مطابقت دارد. اگر یک اسلش به دنبال آن بیاید، تنها با دایرکتوریها مطابقت دارد.
الگو | نمونههای تطابق |
---|---|
logs/** |
تطابق فایل ها و دایرکتوری های داخل دایرکتوری logs |
**/build |
var/build pub/build build |
foo/**/bar |
foo/bar foo/a/bar foo/a/b/c/bar |
؟ - علامت سوال، تنها با یک کاراکتر واحد تطابق دارد.
الگو | نمونههای تطابق |
---|---|
access?.log |
access0.log access1.log accessA.log |
foo?? |
fooab foo23 foo0s |
براکت مربع
[...]، با هر یک از کاراکترهای محصور شده در براکتهای مربع مطابقت دارد. هنگامیکه دو کاراکتر توسط یک کاراکتر"-" جدا میشوند، نشاندهنده طیف وسیعی از کاراکترها است. رنج آن شامل تمام کاراکترهایی است که بین آن دو کاراکتر قرار دارند. این کاراکترها میتوانند حروف الفبا یا عدد باشند.
اگر اولین کاراکتر پس از [، یک علامت تعجب (!) باشد، الگوی مربوطه با هر کاراکتر به جز این مجموعه کاراکترهای مشخص شده مطابقت دارد.
به مثال های زیر دقت کنید:
الگو | نمونههای تطابق |
---|---|
*.[oa] |
file.o file.a |
*.[!oa] |
file.s file.1 file.0 |
access.[0-2].log |
access.0.log access.1.log access.2.log |
file.[a-c].out |
file.a.out file.b.out file.c.out |
file.[a-cx-z].out |
file.a.out file.b.out file.c.out file.x.out file.y.out file.z.out |
access.[!0-2].log |
access.3.log access.4.log access.Q.log |
الگوهای منفی
الگویی که با یک علامت تعجب (!) شروع میشود، هر فایلی را که توسط الگوی قبلی نادیده گرفته شده است، رد میکند. به عبارت دیگر آن فایل را در نظر میگیرد. استثناء این قاعده، برای فایلی است که دایرکتوری والد آن نادیده گرفته شده است.
نمونههای تطابق | الگو |
---|---|
error.log یا logs/error.log نادیده گرفته نمی شوند |
*.log !error.log |
نمونه ای از gitignore
در زیر، نمونهای از آنچه ممکن است در فایل gitignore. مشاهده کنید، نمایش داده شده است:
# Ignore the node_modules directory
node_modules/
# Ignore Logs
logs
*.log
# Ignore the build directory
/dist
# The file containing environment variables
.env
# Ignore IDE specific files
.idea/
.vscode/
*.sw*
gitignore. محلی
یک فایل gitignore. محلی، معمولاً در دایرکتوری root مخزن (همان دایرکتوری شروع پروژه) قرار میگیرد. با این وجود، شما میتوانید چندین فایل gitignore. را در زیردایرکتوریهای مختلف، در مخزن خود ایجاد کنید. الگوهای موجود در فایلهای gitignore. با دایرکتوری که فایل در آن قرار دارد مطابقت دارد.
الگوهای تعریف شده در فایلهایی که در دایرکتوریهای سطح پایین (زیر دایرکتوریها) قرار دارند، نسبت به موارد موجود در دایرکتوریهای سطح بالاتر اولویت دارند.
فایلهای gitignore. محلی با سایر توسعهدهندگان به اشتراک گذاشته میشوند و باید حاوی الگویی باشند که برای تمام دیگر کاربران مخزن مفید است.
این مطلب نیز ممکن است برای شما مفید باشد: نحوه بازنشانی آخرین commit در گیت (git)
قوانین شخصی
الگویهایی که مختص مخزن محلی شما هستند و نباید برای مخزنهای دیگر توزیع شوند، باید در فایل git/info/exclock. قرار بگیرند.
به عنوان مثال، شما میتوانید از این فایل برای نادیده گرفتن فایلهای تولید شده از ابزارهای پروژه شخصی خود استفاده کنید.
gitignore. سراسری
Git، این امکان را نیز فراهم میکند که یک فایل gitignore. سراسری ایجاد نمایید. در آنجا، شما میتوانید قوانین مربوط به نادیده گرفتن فایلها و دایرکتوریها را برای هر مخزن Git، در سیستم محلی خود تعریف کنید.
این فایل را میتوانید با هر نامی نامگذاری کرده و در هر مکانی ذخیره نمایید. رایجترین مکان برای نگهداری این فایل، دایرکتوری home است. برای استفاده از فایل، باید آن را به صورت دستی ایجاد کرده و Git را پیکربندی نمایید.
به عنوان مثال، برای تنظیم gitignore_global./~ بهعنوان فایل سراسری Git که در آن قوانین نادیده گرفتن فایلها و دایرکتوریها بصورت سراسری وجود دارد، مراحل زیر را دنبال کنید:
1. فایل را ایجاد نمایید:
$ touch ~/.gitignore_global
2. فایل را به پیکربندی Git اضافه کنید:
$ git config --global core.excludesfile ~/.gitignore_global
3. فایل را با ویرایشگر متن خود باز کرده و قوانین خود را به آن اضافه نمایید.
قوانین سراسری، بهطور ویژه برای نادیده گرفتن فایلهای خاصی که هرگز نمیخواهید کامیت شوند، مانند فایلهایی با اطلاعات حساس و یا فایلهای قابل اجرای کامپایل شده مفید هستند.
این مطلب نیز ممکن است برای شما مفید باشد: نحوه نصب و پیکربندی GitLab در سیستم عامل Ubuntu 18.04
نادیده گرفتن فایلهای کامیت شده
فایلهایی که دائماً برروی آنها کار میکنید، طبق میل شما میتوانند توسط Git ردیابی شوند یا ردیابی نشوند.
بنابراین، برای نادیده گرفتن فایلی که قبلاً کامیت کردهاید، باید فایل مورد نظر را از فهرست فایلها برای کامیت حذف کرده و سپس یک قانون برای آن فایل در gitignore. اضافه نمایید:
$ git rm --cached filename
گزینه cached-- به git میگوید که فایل را از درخت کاری (مجموعهای از فایلهایی که دائماً برروی آن کار میکنید)، حذف نکند؛ بلکه فقط آن را از فهرست فایلهای کامیت حذف نماید.
برای حذف بازگشتی یک دایرکتوری، از گزینه r- استفاده کنید:
$ git rm --cached filename
اگر میخواهید فایل را هم از فهرست فایلهای کامیت و هم از سیستم فایل محلی حذف نمایید، گزینه cached-- موجود در مثال بالا را نباید بکار ببرید.
هنگام حذف فایل به صورت بازگشتی، از گزینه n- استفاده کنید تا یک “dry run” اجرا کرده و به شما نشان دهد چه فایلهایی حذف خواهند شد:
$ git rm -r -n directory
اشکال زدایی فایل gitignore
گاهی اوقات تشخیص اینکه چرا یک فایل خاص نادیده گرفته شده است، به یک چالش مبدل میشود؛ بهویژه هنگامیکه از چندین فایل gitignore. یا الگوهای پیچیده استفاده میکنید. در اینجاست که دستور git check-ignore با گزینه v- قابل استفاده است؛ چرا که به git میگوید، جزئیات در مورد الگوی تطبیق را نمایش دهد.
در واقع، این دستور نشان میدهد که این فایل به چه علت توسط git نادیده گرفته میشود!
بهعنوان مثال، برای بررسی دلیل نادیده گرفتن فایل www/yarn.lock، باید دستور زیر را اجرا کنید:
$ git check-ignore -v www/yarn.lock
خروجی، مسیر فایل gitignore، تعداد خط تطبیق و الگوی واقعی را نشان میدهد.
Output:
www/.gitignore:31:/yarn.lock www/yarn.lock
این دستور، بیش از یک نام فایل را نیز میتواند به عنوان آرگومان بپذیرد، و حتی فایلهایی را که در درخت کاری شما وجود ندارند.
این مطلب نیز ممکن است برای شما مفید باشد: نحوه تغییر پیام Git Commit
نمایش همه فایلهای نادیده گرفته شده
دستور git status با گزینه ignored--، لیستی از تمام فایلهای نادیده گرفته شده را نشان میدهد:
$ git status --ignored
منبع:
0 دیدگاه
نوشتن دیدگاه