
برای استفادهی حرفهای از Git، فقط بلد بودن دستورات کافی نیست. اگر معماری داخلی Git را درک کنید، دقیقاً متوجه میشوید چطور دادهها ذخیره میشوند، چرا Git سریع است و چگونه میتوانید تغییرات را مدیریت کنید. در این فصل معماری Git را بررسی میکنیم تا پایهای قوی برای ادامهی مسیر داشته باشید.
Git چگونه دادهها را مدیریت میکند؟

برخلاف تصور بسیاری، Git فایلها را مثل یک سیستم ذخیرهسازی سنتی مدیریت نمیکند. Git بیشتر شبیه یک سیستم ذخیرهسازی مبتنی بر عکس (Snapshot) عمل میکند.
- هر بار که شما Commit میکنید، Git یک عکس کامل (Snapshot) از وضعیت پروژه میگیرد.
- اگر فایلی تغییر نکرده باشد، Git فقط به نسخهی قبلی آن اشاره میکند.
- این کار باعث صرفهجویی در فضا و افزایش سرعت میشود.
معماری اصلی Git
Git FLow
Git از چند بخش اصلی تشکیل شده است که با هم یک سیستم قدرتمند را شکل میدهند:

1. Working Directory (دایرکتوری کاری)
این همان پوشهای است که شما روی سیستمتان میبینید. فایلها را در آن ویرایش میکنید، اضافه یا حذف میکنید.
2. Staging Area (مرحلهی آمادهسازی)
به آن Index هم میگویند. اینجا جایی است که مشخص میکنید کدام تغییرات قرار است در Commit بعدی ذخیره شوند.
- دستور
git add
تغییرات را از Working Directory به Staging Area منتقل میکند.
3. Repository (مخزن Git)
مخزن همان جایی است که تمام تاریخچهی پروژه، Commitها و متادیتاها ذخیره میشوند. مخزن شامل دو نوع است:
- Local Repository (روی سیستم شما).
- Remote Repository (روی سرورهایی مثل GitHub یا GitLab).
اجزای داخلی Git (پشت صحنه)
Git دادهها را در قالب سه ساختار داده اصلی مدیریت میکند:
- Blob (Binary Large Object)
- هر فایل بهصورت یک Blob ذخیره میشود.
- Blob فقط محتوای فایل را نگه میدارد (بدون نام فایل).
- Tree
- ساختار دایرکتوریها و فایلها را نمایش میدهد.
- به Blobها اشاره میکند و نام فایلها را مدیریت میکند.
- Commit
- یک Commit به یک Tree اشاره دارد.
- شامل اطلاعاتی مثل پیام Commit، نویسنده، زمان و والد Commit است.
در واقع هر Commit یک اسنپشات کامل از پروژه است که با استفاده از Hashها (SHA-1) شناسایی میشود.

Git Objects و Hashing
Git برای شناسایی یکتا از SHA-1 Hash استفاده میکند.
- هر Blob، Tree و Commit یک Hash منحصربهفرد دارد.
- این Hash تضمین میکند که دادهها تغییرناپذیر (Immutable) باقی بمانند.
مثال:
e68ff47f2a0c8b04d3a1f9eaa8f2a1dbe5a1d213
این رشته 40 کاراکتری یک Hash از یک Commit یا فایل است.
چرخهی تغییرات در Git
برای بهتر فهمیدن معماری، بیایید مسیر تغییرات را مرور کنیم:
- تغییر فایلها در Working Directory.
- اضافه کردن تغییرات به Staging Area با
git add
. - ذخیره تغییرات در Local Repository با
git commit
. - ارسال تغییرات به Remote Repository با
git push
.
این چرخه پایهایترین معماری Git را نشان میدهد.
چرا معماری Git قدرتمند است؟
- سرعت بالا: چون Git مبتنی بر Snapshot است.
- امنیت دادهها: Hashها تضمین میکنند دادهها تغییر نکنند.
- کار گروهی آسان: با وجود Remote Repositoryها، تیمها بهراحتی میتوانند همکاری کنند.
- انعطافپذیری: امکان Branching و Merging با معماری Git بسیار ساده است.
معماری Git بر پایهی سه بخش اصلی Working Directory، Staging Area و Repository است و در سطح پایینتر از Blob، Tree و Commit تشکیل شده است. درک این معماری کمک میکند بفهمید چرا Git سریع، امن و پرکاربرد است.
در فصل بعد (Chapter 3: Installing and Configuring Git) یاد میگیریم چطور Git را نصب و تنظیم کنیم تا آمادهی استفاده در پروژهها باشیم.