گیت (git) چیست ؟

سلام سلام من دانیالم با یک پست کوچولو صرفا برای کسایی هیچ اطلاعاتی درباره گیت ندارن.

خوب گیت چیه اصلا ؟

خوب سوال خوبیه (اما برای برنامه نویسا)

فکر کنید یک پروژه نسبتا بزرگ یا متوسط زدید که کلی فایل توشه ، مثلا به فرض یک اپ اندروید که صفحه های مختلفی توش داره. از صفحه لاگین گرفته تا صفحه کاربران ، لیست خرید و فلان بیسار

خوب حالا ما میخوایم یک صفحه ای به نام مثلا علاقه مندی ها بهش اضافه کنیم که قطعا با بقیه صفحات هم در ارتباط هست ، اینکارو هم میکنیم اما یک هو به یک باگی میخوریم که معلوم نیست از کجا اومده

خوب اینجا دو تا حالت پیش میاد

  • یا با git زدی پروژتو
  • یا بدون گیت کار کردی

خوب اگه جزو افراد دسته اول باشی که کارت خیلی راحته اما اگه جزو افراد دسته دوم باشه تقریبا میشه گفت کارت خیلی خیلی سخته چرا ؟

چون باید بشینی کل کدتو یکی یکی دیباگ کنی ببین کجاش مشکل داره با کد جدیدت ، یا شایدم یک چیزی رو اشتباهی دستت خورده و اضافه کردی ولی حواست نیست!

خوب اما گیت اینجور جاها میاد کمکت ?

گیت قابلتی داره به نام commit یا به فارسی کامیت خودمون. این احتمالا کاری هست که خیلی ها قبل از آشنایی با گیت انجام دادن حتی خود من ?

چیکار میکردیم؟! میومدیم از هر نسخه از اپی که درست میکردیم مثلا یک بخش اضافه کردیم که علاقه مندی ها رو بهمون نشون میداد ،میومدیم کل پروژه رو یک بار کپی میگرفتیم تو یک پوشه ذخیره میکردیم که اگه به ارور خوردیم برگردیم به این نسخه که باگ نداشت

این یکی از باحال ترین کارایی که گیت میتونه با یک دستور به راحتی براتون انجام بده، و البته فقط گیت به این کارش خلاصه نمیشه این یکی از صدها کاری بود که میشه با گیت انجام داد

قابلیت کامیت (commit)

شما میتونید با قابلیت کامیت از هر بخش یا کاری که تو پروژتون انجام دادید یک نسخه مثلا پشتیبان بگیرید با یک توضیح (که بهش تو گیت میگن کامنت) که بفهمید این بکاپ براچی بوده ، بعد خیلی راحت میتونید این کار هارو انجام بدید با گیت (git)

  • دیدن کد های قبلی یا رفتن به صورت کلی به پروژه قبلی (یعنی کل فایل های پروژه قبلی برمیگرده تا ببینید فقط)
  • دیدن تفاوت های در پروژه قبلی ، مثلا یک فایل داشتید به نام x و تو نسخه جدید یکم تغییر دادید یا به صورت ناخواسته تغییر دادیش و به یک باگ خوردید ، تو این فایل این قابلیت میاد میگه تو پروژه قبلی این خط کد ها نسبت به پروژه قبلی تغییر اضافه یا حذف شده
  • کلا برگشتن به پروژه قبل (یعنی کامیت الانتون حذف شه و تغییرات برگرده به کامیت قبلی یا هر کامیتی که میخواید)
  • آپلود پروژه روی گیت هاب و گرفتن از اون (برای کسایی مثل من که مشکل بکاپ نداشتن از پروژشون رو دارن عالیه)
  • دیدن لیست تمام تغییرات به همراه تاریخ کلی اطلاعات دیگه که گیت در اختیارتون میزاره مثل عکس زیر که از یکی از پروژه های خودمه
دقت کنید اینا فقط قابلیت های بخش commit گیت بود ، بازم میگم گیت خیلی خیلی بزرگ تر از چیزیه که فکر میکنید و ده ها یا شایدم صد ها قابلیت داره

به عنوان مثال قابلیت مرج هم یکی از قابلیتای خوبه که میتونیم بهش اشاره کنیم

قابلیت مرج و برنچ (branch)

فکر کنید شما یک شرکت با تعداد کارکنان زیاد یا متوسط هستید و همگی روی یک اپلیکیشن ، سایت ، نرم افزار یا هرچیزی به صورت مشترک کار میکنید

به فرض همه روی طراحی یک سایت کار میکنید خوب ، یکی میخواد بخش ورود سایت رو بنویسه یکی دیگه مثلا بخش پرداخت سایت. خوب اینا همه با هم که نمیتونن به فایل های اصلی دسترسی داشته باشن (اینجا فایل اصلی همون هسته سایتمون میشه). خوب گیت میاد چیکار میکنه میاد به هر کسی دسترسی یک نسخه از اون سایت رو میده بدون اینکه بتونن تغییری ایجاد بکنن روی اصل کار (نکه نتونن میتون یعنی اینجا رو تغییر بدن تو سایت هیچی تغییر نمیکنه)

بعد کسی که مثلا میخواد صفحه لاگین رو طراحی بکنه ، وقتی طراحیش تموم شد میاد به مدیر اصلی پروژه درخواست میده که آقا صفحه لاگین تموم شد مدیر پروژه هم وقتی تایید بکنه این میاد به عنوان یک قابلیت میچسبه یا اضافه میشه به پروژه اصلی یک چیزی شبیه تصویر زیر هست این کار

دقیقا مثل عکس بالا قابلیتی که قراره به پروژتون اضافه کنید میشه Feature و پروژه اصلی یا هسته پروژتون میشه Master یا Main یا هر اسمی میخواین براش بزارین

و در آخر وقتی مدیر پروژه اینو تایید کرد میاد و به پروژه اصلی اضافه میشه

این بود از دو تا از قابلیت های خوبه گیت که البته کل گیت به اینا خلاصه نمیشه و کلی کار دیگه میشه باهاش کرد

اگه خواستین میتونم کار با گیت هم توی پست های بعدی تو ویرگول بهتون توضیح بدم

برای نصبشم خیلی سادس فقط کافیه برای لینوکس از دستور زیر استفاده کنید :

sudo apt install git

و واسه نصب ویندوز هم باید برید تو سایت

https://git-scm.com

امیدوارم این مطلب براتون مفید بوده باشه