Git index یک منطقه staging بین پوشه محل کار و مخزن است. برای ایجاد مجموعه ای از تغییرات که می خواهید با هم انجام دهید استفاده می شود. برای درک بهتر شاخص Git، ابتدا پوشه کاری (working dir) و مخزن را درک کنید.
سه مکان در Git وجود دارد که در آن تغییرات فایل می تواند وجود داشته باشد، و اینها پوشه محل کاری، Staging و مخزن هستند.
Working directory
وقتی روی پروژه خود کار کردید و تغییراتی ایجاد کردید، با پوشه محل کاری پروژه خود سروکار دارید. این پوشه پروژه در سیستم فایل کامپیوتر شما موجود است. تمام تغییراتی که ایجاد میکنید تا زمانی که آنها را به قسمت staging اضافه نکنید، در پوشه کاری باقی میمانند.
Staging area
staging را می توان به عنوان پیش نمایشی از commit بعدی شما توصیف کرد. زمانی که یک git commit ایجاد می کنید، Git تغییراتی را که در قسمت Staging هستند را می گیرد و آنها را به عنوان یک commit جدید می سازد. شما مجاز به افزودن و حذف تغییرات از ناحیه staging هستید. ناحیه staging را می توان به عنوان یک منطقه واقعی در نظر گرفت که git تغییرات را در آن ذخیره می کند.
اگرچه، Git دایرکتوری Staging اختصاصی ندارد که بتواند برخی از اشیاء را که نشان دهنده تغییرات فایل (blobs) هستند، ذخیره کند. به جای این، از فایلی به نام index استفاده می کند.
Repository
در Git، Repository مانند یک ساختار داده است که توسط GIt برای ذخیره متادیتا برای مجموعه ای از فایل ها و دایرکتوری ها استفاده می شود. این شامل مجموعه ای از فایل ها و همچنین تاریخچه تغییرات ایجاد شده در آن فایل ها است. Repositories در Git به عنوان پوشه پروژه شما در نظر گرفته می شود. یک مخزن تمام داده های مربوط به پروژه را دارد. پروژه های مجزا دارای مخازن مجزا هستند.
با دستور git status می توانید آنچه را در ایندکس وجود دارد بررسی کنید. دستور git status به شما این امکان را میدهد که ببینید کدام فایلها در staging قرار داده شده، تغییر یافتهاند اما هنوز وارد staging نشدهاند و بهطور کامل ردیابی نشدهاند. فایل های staging شده به این معنی است
همانطور که قبلاً اشاره کردیم ایندکس یک فایل است نه یک دایرکتوری، بنابراین Git اشیاء را در آن ذخیره نمی کند. در عوض، اطلاعات مربوط به هر فایل را در مخزن ما ذخیره می کند. این اطلاعات می تواند:
- mtime: It is the time of the last update.
- file: It is the name of the file.
- Wdir: The version of the file in the working directory.
- Stage: The version of the file in the index.
- Repo: The version of the file in the repository.
و در نهایت، Git دایرکتوری کاری شما را ایجاد می کند تا با محتوای commit که HEAD اشاره می کند مطابقت داشته باشد.