چطور و چگونه دیگر از Git نترسیم - قسمت 1



visibility  
mode_comment   ۰

چطور و چگونه دیگر از Git نترسیم - قسمت 1در این مطلب میخوام اطلاعاتی رو در مورد Git در اختیارتون قرار بدم که بهتون کمک میکنه که دیگر از Git ترس نداشته باشید و بتونین راحت‌تر با اون کار کنید و پروژه‌هاتون رو مدیریت کنید.

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

چطور تغییراتتون رو بررسی میکنید؟ چگونه به کدهایی که قبلا نوشتید برمی‌گردید و از کدهای قدیمی که مشکلی نداشتند، استفاده میکنید؟

حالا فرض کنید که پروژه هم خیلی بزرگ نباشه و فقط خودتون با یکی دو نفر دیگه بر روی پروژه کار میکنید و شما یک ویژگی جدید برای این پروژه به وجود میارید، که باگهای مخفی در خودش داره. حالا شما نمیدونین که چه جاهایی رو تغییر دادین تا این ویژگی جدید رو به وجود بیارید.

پس همونطور که میبینید در همه شرایط بالا، یک چیزی کم داریم و جای یک چیزی خالی هست.

پاسخ به همه مشکلات و سوالات بالا، versioning هست. اگر برای همه چیز Version داشته باشید، مطمئن خواهید بود که چه کسی و در چه زمانی، چه تغییراتی رو به وجود آورده و میتونین به راحتی به هر Version از پروژه که بخواید برید. با اینکار همه اطلاعات از اولین روز کار بر روی پروژه تا به الان رو خواهید داشت.

اینجا هست که Git خودش رو نشون میده و با استفاده از اون میتونین مشکلات بالا رو فراموش کنید. اگر از گیت درست استفاده کنید، از مشکلات بالا خودداری میشه و میتونین بر روی پروژه خودتون تمرکز کنید و بقیه چیزا رو به گیت بسپارید.

من فرض میکنم که شما دستورات ساده در مورد Git رو میدونین و یا اینکه حداقل در مورد اونا شنیدید و یا یک بار از اونا استفاده کردید. اگر تا حالا چیزی در مورد Git نشنیدید، در اینجا واژگانی رو در اختیارتون قرار میدم که بهتون کمک میکنه که کار با اون رو شروع کنید.

متخصص وردپرس
قالب ها و پلاگین های حرفه ای وردپرس رو خودت بنویس! بازار طراحی قالب و پلاگین نویسی وردپرس به شدت داغه و اگر بلد باشید با برنامه نویسی اختصاصی، قالب ها و پلاگین های دلخواه بنویسید تو مارکت های مطرح دنیا و یا از طریق فریلنسری می تونید به درآمد بالا برید. دوره متخصص وردپرس سون لرن رو حتما ببینید: متخصص وردپرس arrow_back
  • Repository : یک جایی برای ذخیره کردن چیزهای مختلف در مورد پروژه شما است. در Git همون دایرکتوری هست که فایلهاتون در اون قرار میگیره.
  • head : یک اشاره‌گر یا pointer به آخرین کدهایی که شما دارید روی اون کار میکنید
  • add : یک عمل یا action هست که با استفاده از اون ار Git میخوایم که فایل مورد نظر رو track یا دنبال کنه و تغییرات اون رو مورد بررسی قرار بده.
  • commit : یک عمل هست که با استفاده از اون حالت فعلی رو ذخیره میکنیم.
  • remote : یک repository که local نیست. میتونه در یک فولدر دیگه باشه و یا در cloud مثل سایت Github باشه. با استفاده از قرار دادن repository در cloud مثل Github به دیگران این امکان رو میدین که به راحتی پروژه مورد نظر رو دریافت کنند و تغییرات مورد نظر رو در اون به وجود بیارن و بصورت تیمی و از راه دور بتونین پروژه مورد نظرتون رو مدیریت کنید. با اینکار اگر برای سیستم شما هم مشکلی به وجود بیاد، مطمئن هستید که یک Backup یا نسخه پشتیبان وجود داره که میتونین از اون استفاده کنید.
  • pull : یک عمل برای دریافت کدهای به روز رسانی شده از Remote
  • push : یک عمل برای ارسال کدهای به روز رسانی شده به Remote
  • merge : یک عمل برای ادغام کردن دو نسخه متفاوت از کد
  • status : نمایش اطلاعات در مورد وضعیت فعلی repository

Git چگونه کار میکنه؟

همه کارهای بالا و اطلاعات مربوط به گیت، در یک دایرکتوری hidden یا مخفی با نام .git ذخیره‌سازی میشه. اگر در سیستم خودتون فایلهای مخفی رو نمایش بدین و ریشه پروژه خودتون رو ببینید، یک دایرکتوری بنام .git در اون وجود داره. حالا میتونیم در command line از دستور tree استفاده کنیم و ساختار این دایرکتوری جادویی رو مشاهده کنیم:

این دایرکتوری همون جایی هست که گیت با استفاده از اون کل پروژه شما رو مدیریت میکنه. بخش‌های مهم ساختار بالا رو در ادامه یکی یکی براتون توضیح خواهیم داد تا بیشتر با اون آشنا بشید. Git شامل 3 بخش میشه:

  • object store
  • index
  • working directory

Object store

این مورد روشی هست که گیت با استفاده از اون هر چیزی رو در خودش ذخیره و نگهداری میکنه. برای هر فایلی که در پروژتون اون رو add میکنید، Git یک hash یکتا برای اون به وجود میاره و اون رو در دایرکتوری objects در .git ذخیره‌سازی میکنه. برای مثال اگر یک فایل بنام helloworld به وجود بیاریم و با استفاده از دستور git add helloworld اون رو add کنیم، ساختار بالا بصورت زیر تغییر خواهد کرد:

همونطور که میبینید یک hash جدید در دایرکتوری objects  قرار گرفت. همونطور که میبینید دو کاراکتر اول این hash به عنوان نام دایرکتوری و بقیه به عنوان نام فایل قرار گرفته است. با استفاده از این روش گیت سریعتر Hash ها رو پیدا میکنه. برای افرادی که مشتاق هستند در اینجا چه اتفاتی در پس زمینه افتاد، باید بگم که Git از hash-object استفاده میکنه. بصورت زیر:

همونطور که میبینید این hash که در اینجا تولید شد، دقیقا همون hash ای هست که گیت اون رو به وجود آورد و در دایرکتوری objects قرار داد. پس Git یک object با نام hash بالایی میسازه و محتویات فایل مورد نظر رو فشرده یا Compress و اون رو ذخیره‌سازی میکنه.

شما همچنین میتونین با استفاده از دستور cat-file محتویات یک object در git رو مشاهده کنید. بصورت زیر:

میبینید که خروجی همون محتویات فایل اولی هست و با استفاده از دستور cat-file میتونیم محتویات یک object که توسط git فشرده‌سازی شده است رو به راحتی ببینیم.

دستوراتی که در بالا گفته شد اصلا در روند مدیریت پروژه با گیت مورد استفاده قرار نمیگیره و فقط بیان شد تا ببینید در پس زمینه چه اتفاقی داره میوفته. خود Git همه کارها رو برای شما انجام میده.

پس همونطور که دیدید git add یک hash به وجود میاره و محتویات فایل رو فشرده میکنه و object فشرده شده رو به object store اضافه میکنه.

working directory

همونطور که از اسم این عنوان معلوم هست، working directory همونجایی هست که شما دارید کارتون رو انجام میدین و کد میزنید. همه فایلهایی که میسازید و ویرایش میکنید در working directory قرار دارند. یک فایل بنام byeworld رو به وجود میارم و دستور git status رو در command line اجرا میکنم، با اینکار خروجی بصورت زیر خواهد شد:

Untracked files همون فایلهایی هستند که در working directory قرار دارند و ما از git نخواستیم که اونا رو مدیریت و track بکنه. اگر چیزی در working directory وجود نداشته باشه و دستور git status رو اجرا کنیم، خروجی بصورت زیر خواهد بود:

به همین راحتی.

در قسمت بعدی از این مطلب، بقیه موارد مربوط به این مبحث رو در اختیارتون قرار میدم.

comment دیدگاه کاربران

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.