مجید ایمان زاده
مجید ایمان زاده
خواندن ۲ دقیقه·۴ سال پیش

گیت چگونه کار میکند؟ قسمت ۲

توی مقاله ی گیت چگونه کار میکند؟ نگاهی به داخل پوشه .git یک توضیح کلی در رابطه با گیت داده شد و بعضی از پوشه هایی که در گیت بودند را توضیح دادیم.

توی این مقاله بیشتر با اتفاقاتی که در پوشه گیت میوفته اشنا میشیم که چطور فایل ها و تغییرات ما در گیت ذخیره میشوند.

همه چیز در گیت آبجکت است

انواع آبجکت:

  • کامیت: نگهدارنده اطلاعت شخص کامیت کننده (author), پیام کامیت (message), اشاره کننده ای (pointer) به درختی از تغییرات.
  • درخت (tree): اشاره کننده ای (pointer) به فایل ها و درخت های دیگر (برای مثال شما در یک کامیت پنج فایل و یک فولدر را کامیت کردید. اینکه بدانیم این کامیت به چه فایل هایی لینک شده توسط درخت انجام میشود)
  • و blob: بلاب ها فایل ها و تغییرات ما هستند که در پوشه objects ذخیره میشوند .

گیت دیتابیسی از اشاره ها است | Git is Database of Reference

یک سری توضیحات تیتروار در خصوص گیت

  • گیت یک گراف است.
  • کامیت ها همگی به parent خود اشاره میکنند (کامیت قبلی خود چی بوده)
  • برنچ ها صرفا فایل هایی هستند که به یک کامیت مشخص اشاره میکنند.
  • و HEAD یک اشاره گر به اخرین فعال ما میباشد.
  • نام هر آبجکت ما با SHA1 ۴۰ کارکتری تشکیل شده که unique می باشد.
  • گیت از دو حرف اول کارکتر ها برای سازماندهی کردن فایل ها استفاده میکند.
.git/objects/77/dfg52s …………

بعد از توضیحات بالا همراه با مثال میخوایم با مفاهیم آشنا بشیم.

کامیت در گیت

برای این که شما بخواهید تغییرات شما در گیت ثبت شده و نگهداری شود لازم هست ان ها را کامیت کنید. به چه صورت؟ با دستور زیر:

git commit -m &quotsome changes&quot
کامیت در گیت
کامیت در گیت

حال اگر من دستور زیر را وارد کنم:

git log

کامیت های من همانند عکس زیر لیست میشوند.

git log
git log

مشاهده میکنید که نام کامیت ما یک هش ۴۰ رقمی میباشد.

مشاهده ابجکت کامیت
مشاهده ابجکت کامیت

وقتی سری پوشه ابجکت میزنیم مشاهده میکنیم که دو کارکتر اول کامیت به عنوان نام دایرکتوری و باقی کارکتر ها به عنوان نام ابجکت در نظر گرفته شده اند.

در کامیت گیت ما چه میگذرد؟ | بریم داخل آبجکت های گیت :)

حال سوالی که پیش میاد این هست اطلاعات کامیت کجا ذخیره میشود؟

شما با دستور زیر میتوانید محتویات یک هش را مشاهده کنید:

git cat-file SHA1 مثال git cat-file -p 5d45aef0b749536bf8b3d49895b3578563f195d1
git cat-file sha1
git cat-file sha1

همینطور که مشاهده میکنید اطلاعاتی در خصوص کامیت به ما میده (چون کامیت اول هست parent نداره)

در تصویر بالا کلمه tree به چشم میخوره که به یک هش اشاره میکنه. دوباره با دستور بالا محتویات درخت رو مشاهده میکنیم

git cat-file -p 077fef12a2ede0450eaa3e4b2380a39cc06741e1

خب در تصوری بالا مشاهده میکنید که درخت ما فقط به یک blob (محتوای متنی یا تصویر و ...) اشاره میکنه.

خریجی دستور بالا میتواند بسته به تعداد فایل ها و دایکرتوری های کامیت میتفاوت باشد و به blob های مختلف اشاره کند.

حال میخواهیم بدانیم که در فایل blob ما چه چیزی ذخیره شده است:

git cat-file -p 1450341708adc49b15ee929ddfac55d9dff9c099

همینطور که میبینید majid در این فایل ذخیره شده.

نکته:

بعد از تغییر در هر فایل گیت تمام فایل را هش کرده و داخل یک blob ذخیره میکند و با کمک همین ویژگی شما میتوانید تغییرات گذشته یک فایل را مشاهده کنید

امیدوارم از این مقاله استفاده کافی رو برده باشید.

gitgitlabgithubگیتلینوکس
یک توسعه دهنده سمت سرور ساده
شاید از این پست‌ها خوشتان بیاید