مخزن (Repository)، در Git
مخزن یا Repository (که به اختصار «Repo» هم نامیده می شود)، قلب و هسته سیستم کنترل نسخه Git است.
به زبان ساده، مخزن Git یک فضای ذخیره سازی دیجیتال (یک دایرکتوری مخفی به نام
.git ) است که تمام فایل های پروژه شما، به همراه تاریخچه کامل تمام تغییراتشان را در خود نگه می دارد.
در عکس زیر، پوشه
.git مربوط به یک پروژه دلخواه در کامپیوتر خودمان را مشاهده می کنید :
مخزن، یک «پایگاه داده تغییرات» است:
برخلاف پوشه های معمولی که فقط آخرین نسخه فایل ها را نگه می دارند، مخزن Git یک پایگاه داده مبتنی بر شیء (Object Database) است. هر بار که شما تغییرات را ذخیره (Commit) می کنید، Git یک عکس فوری (Snapshot) از تمام فایل های پروژه در آن لحظه ثبت می کند. بنابراین، مخزن به شما اجازه می دهد تا به هر نقطه قبلی از تاریخچه پروژه بازگردید، ببینید چه کسی چه تغییری داده و چرا.
دو نوع مخزن اصلی وجود دارد:
مخزن محلی (Local Repository): این همان پوشه
.git است که در ریشه پروژه شما روی کامپیوتر شخصی تان قرار دارد. تمام کارهای روزمره (ایجاد نسخه، مشاهده تاریخچه، ساخت شاخه) در این مخزن انجام می شود و کاملا آفلاین است.
مخزن راه دور (Remote Repository): نسخه ای از پروژه است که روی یک سرور یا سرویس ابری (مثل GitHub یا GitLab یا Bitbucket) قرار دارد. از این مخزن برای همکاری با دیگران و پشتیبان گیری استفاده می شود. شما با دستوراتی مثل push (فرستادن تغییرات به سرور) و pull (دریافت تغییرات از سرور) بین مخزن محلی و راه دور ارتباط برقرار می کنید.
مخزن چه چیزهایی را ثبت می کند؟
یک مخزن Git فقط فایل ها را ذخیره نمی کند، بلکه اطلاعات زیر را به دقت ثبت می کند:
محتوای خود فایل ها.
تاریخ و زمان هر بار ذخیره سازی (Commit).
هویت شخصی که تغییر را انجام داده (نام و ایمیل).
پیامی که توضیح می دهد آن تغییر برای چه بوده است (Commit Message).
ارتباط بین نسخه ها (گراف شاخه ها) تا مشخص شود هر نسخه از کدام نسخه قبلی ایجاد شده است.
تفاوت مخزن با پوشه معمولی (Working Directory) :
خیلی مهم است که این دو را اشتباه نگیرید:
پوشه کاری (Working Directory): همان فایل هایی هستند که شما در کامپیوتر خود می بینید و ویرایش می کنید (مثل index.html یا main.py).
مخزن (Repository): پوشه مخفی
.git درون آن پوشه کاری است. وقتی شما یک فایل را ویرایش می کنید، این تغییرات هنوز در مخزن ثبت نشده اند. فقط وقتی دستور
git add (انتخاب فایل ها) و سپس
git commit (ثبت نهایی) را اجرا می کنید، آن عکس فوری وارد مخزن (پایگاه داده) می شود.
یک مثال ساده برای جمع بندی:
فرض کنید در حال نوشتن یک کتاب هستید.
پوشه کاری همان صفحه ای است که الان روی میز کار دارید و با خودکار روی آن می نویسید.
مخزن (Repository) یک قفسه بایگانی است که از تمام نسخه های قبلی کتاب شما (پیش نویس ها) عکس برداری کرده، آن ها را شماره زنی و تاریخ دار کرده و در پوشه های منظم کنار هم چیده است. هر وقت بخواهید، می توانید سراغ قفسه بروید و هر نسخه ای از گذشته را دوباره روی میز کار بیاورید.