توی مقاله ی گیت چگونه کار میکند؟ نگاهی به داخل پوشه .git یک توضیح کلی در رابطه با گیت داده شد و بعضی از پوشه هایی که در گیت بودند را توضیح دادیم.
توی این مقاله بیشتر با اتفاقاتی که در پوشه گیت میوفته اشنا میشیم که چطور فایل ها و تغییرات ما در گیت ذخیره میشوند.
انواع آبجکت:
یک سری توضیحات تیتروار در خصوص گیت
.git/objects/77/dfg52s …………
بعد از توضیحات بالا همراه با مثال میخوایم با مفاهیم آشنا بشیم.
برای این که شما بخواهید تغییرات شما در گیت ثبت شده و نگهداری شود لازم هست ان ها را کامیت کنید. به چه صورت؟ با دستور زیر:
git commit -m "some changes"
حال اگر من دستور زیر را وارد کنم:
git log
کامیت های من همانند عکس زیر لیست میشوند.
مشاهده میکنید که نام کامیت ما یک هش ۴۰ رقمی میباشد.
وقتی سری پوشه ابجکت میزنیم مشاهده میکنیم که دو کارکتر اول کامیت به عنوان نام دایرکتوری و باقی کارکتر ها به عنوان نام ابجکت در نظر گرفته شده اند.
حال سوالی که پیش میاد این هست اطلاعات کامیت کجا ذخیره میشود؟
شما با دستور زیر میتوانید محتویات یک هش را مشاهده کنید:
git cat-file SHA1 مثال git cat-file -p 5d45aef0b749536bf8b3d49895b3578563f195d1
همینطور که مشاهده میکنید اطلاعاتی در خصوص کامیت به ما میده (چون کامیت اول هست parent نداره)
در تصویر بالا کلمه tree به چشم میخوره که به یک هش اشاره میکنه. دوباره با دستور بالا محتویات درخت رو مشاهده میکنیم
git cat-file -p 077fef12a2ede0450eaa3e4b2380a39cc06741e1
خب در تصوری بالا مشاهده میکنید که درخت ما فقط به یک blob (محتوای متنی یا تصویر و ...) اشاره میکنه.
خریجی دستور بالا میتواند بسته به تعداد فایل ها و دایکرتوری های کامیت میتفاوت باشد و به blob های مختلف اشاره کند.
حال میخواهیم بدانیم که در فایل blob ما چه چیزی ذخیره شده است:
git cat-file -p 1450341708adc49b15ee929ddfac55d9dff9c099
همینطور که میبینید majid در این فایل ذخیره شده.
نکته:
بعد از تغییر در هر فایل گیت تمام فایل را هش کرده و داخل یک blob ذخیره میکند و با کمک همین ویژگی شما میتوانید تغییرات گذشته یک فایل را مشاهده کنید
امیدوارم از این مقاله استفاده کافی رو برده باشید.