سرآغاز

آیا تا به حال کدهایتان را به‌دلیل پاک شدن حافظه سیستم از دست داده‌اید؟
یا در کدتان تغییراتی به وجود آورده اید که پروژه‌تان را به‌هم ریخته و از کار خود پشیمان شده باشید؟

یا شده است در پروژه گروهی، در ادغام کدهایتان با سایر اعضای تیم دچار مشکل شوید و دقیق نمیدانید چه کسی چه کرده است و چه باید انجام دهید؟

اگر پاسخ‌تان بله است، شما را به گیت (Git)  فرا می‌خوانم که احتمالا آن را نمی شناسید.

طنز استفاده از کنترل نسخه (گیت) توسط برنامه نویسان
شما جزو کدام دسته اید؟

در این مقاله به صورت مختصر توضیح می‌دهیم که گیت چیست، چرا به آن نیاز داریم و چه تفاوتی میان GitHub و GitLab وجود دارد.

 

لگو نرم‌افزار گیت(Git)@
لگو گیت

گیت (Git) چیست؟

گیت یک نرم‌افزار کنترل نسخه توزیع‌شده (Distributed Version Control System – DVCS)  و البته متن‌باز (Open Source) است که در سال ۲۰۰۵ توسط لینوس توروالدز(Linus Benedict Torvalds) (خالق لینوکس) ساخته شد.

به زبان ساده، گیت به شما کمک می‌کند تا تمام تغییرات پروژه‌تان را ثبت و مدیریت کنید.

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

تصور کنید گیت مثل یک دستیار شخصی برای پروژه‌هایتان است که هر لحظه از کدهای شما عکس می‌گیرد و آن را با تاریخ و توضیحاتی مشخص شده ذخیره می‌کند.

چرا باید از گیت استفاده کنیم؟

۱. سیستم توزیع‌شده (Distributed)

در گیت، هر توسعه‌دهنده یک کپی کامل از کل پروژه و تاریخچه آن را روی سیستم خود دارد.
بنابراین:

  • حتی بدون اینترنت هم می‌توانید کار و Commit انجام دهید.
  • اگر سرور مرکزی از بین برود، پروژه از بین نمی‌رود.

۲. سرعت و کارایی

اکثر عملیات‌ها مانند Commit، Branch، Merge  به‌صورت محلی انجام می‌شوند و نیازی به ارتباط با سرور ندارند؛ به همین دلیل گیت بسیار سریع است.

۳. شاخه‌سازی (Branching) آسان

می‌توانید برای هر ویژگی جدید یا رفع باگ، یک شاخه (Branch) جداگانه بسازید، بدون اینکه کد اصلی را خراب کنید.
در پایان هم فقط با یک Merge، تغییرات را به شاخه اصلی برمی‌گردانید.

 

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

مخزن (Repository) چیست؟

مخزن همان جایی است که گیت تغییرات پروژه را در آن ذخیره و مدیریت می‌کند.
دو نوع مخزن داریم:

مخزن محلی (Local Repository)

روی سیستم شما قرار دارد و با دستور git init  در Command Prompt (CMD)ساخته می‌شود.

مخزن راه دور (Remote Repository)

روی یک سرور یا فضای ابری قرار دارد تا تیم‌ها بتوانند پروژه‌ها را به اشتراک بگذارند و روی آن همکاری کنند.

پلتفرم‌هایی مانند گیت‌هاب و گیت‌لب همین مخزن‌های راه دور را در اختیار شما می‌گذارند.

 

git hub logo
گیت‌هاب بزرگ‌ترین پلتفرم میزبانی کد در جهان است

گیت‌هاب (GitHub): اجتماع جهانی برنامه‌نویسان

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

می‌توانید از این پلتفرم جهت ایجاد پروفایل شخصی، رزومه سازی، نمایش توانایی ها و  مهارت ها نیز استفاده کنید.
این پلتفرم اکنون زیرمجموعه شرکت مایکروسافت می‌باشد.

ویژگی‌های مهم

  • Pull Requests: ارسال و بررسی پیشنهادهای کد قبل از ادغام با نسخه اصلی.
  • Issue Tracking: مدیریت باگ‌ها، پیشنهادها و وظایف تیمی
  • GitHub Actions: اجرای خودکار فرآیندهای CI/CD تست و استقرار
  • Marketplace: ابزارها و پلاگین‌های کاربردی برای توسعه سریع‌تر
  • GitHub Copilot: دستیار هوش مصنوعی برای نوشتن کد

نکته : اگر می‌خواهید وارد جامعه‌ی جهانی برنامه‌نویسان شوید یا پروژه‌های متن‌باز انجام دهید، گیت‌هاب بهترین گزینه است.

 

 

 

git lab logo

 

گیت‌لب (GitLab): پلتفرمی کامل برای DevOps

گیت‌لب فراتر از میزبانی کد است.
این پلتفرم یک ابزار یکپارچه برای کل چرخه DevOps محسوب می‌شود : از ایده‌پردازی و برنامه‌ریزی تا تست، استقرار و مانیتورینگ.

ویژگی‌های مهم

  • CI/CD بومی و قدرتمند: یکی از کامل‌ترین سیستم‌های CI/CD در میان رقبا (در نسخه رایگان هم ارائه می‌شود)
  • Self-Hosting: امکان نصب گیت‌لب روی سرورهای شخصی یا سازمانی (حتی در نسخه رایگان)
  • مدیریت پروژه پیشرفته: شامل Epicها، بردهای Kanban و ابزارهای امنیتی و مانیتورینگ

نکته : اگر در محیط سازمانی فعالیت می‌کنید و به امنیت و کنترل کامل مخزن خود نیاز دارید، گیت‌لب گزینه‌ای حرفه‌ای‌تر است.

 

تفاوت گیت‌هاب و گیت‌لب

ویژگی GitHub GitLab
تمرکز اصلی جامعه و همکاری متن‌باز یکپارچگی کامل DevOps
CI/CD GitHub Actions (جدیدتر) GitLab CI/CD (توکار و قدرتمند)
میزبانی خصوصی فقط در نسخه Enterprise رایگان در نسخه Community
مدیریت دسترسی ساده‌تر دقیق‌تر و سطح‌بندی‌شده‌تر
جامعه کاربران بزرگ‌ترین جامعه در جهان کوچک‌تر اما تخصصی‌تر
رابط کاربری ساده و دوستانه جامع‌تر و فنی‌تر
صفحات ثابت Jekyll با چندین ابزار Static Site Generator

یه نکته مهم :

فرض کنید بنا بر دلایلی قصد انتقال مخزن خود از گیت هاب یه گیت لب یا برعکس را داشته باشید. در این حالت باید بگویم خروجی گرفتن از گیت لب دارای امکانات و جزئیات بیشتری نسبت به گیت هاب است، و البته مستندسازی گیت لب جهت درون ریزی (Import) داده ها به نسبت گیت هاب، قوی تر است و با استفاده از آن به صورت دقیق نحوه مهاجرت از سایرکنترل ورژن ها مانند گیت لب یا Bitbucket و … را آشنا خواهید شد.

 

کدام بهتر است: GitHub یا GitLab؟

سبک کاری شما بستگی دارد 😎

  • اگر توسعه‌دهنده مستقل هستید یا اینکه می‌خواهید رزومه‌ای قوی در جامعه جهانی بسازید گیت‌هابانتخاب مناسب‌تری است.
  • اگر در شرکت یا سازمان کار می‌کنید و به امنیت داده، CI/CD و کنترل داخلی اهمیت بیشتری می‌دهید گیت‌لب گزینه قدرتمندتری است.

 

سرانجام

ساده و کوتاه عرض کنم که :

  1. گیت: ابزار مدیریت نسخه روی سیستم شماست.
  2. گیت‌هاب: پلتفرمی برای اشتراک و همکاری روی پروژه‌های گیت.
  3. ‌گیت‌لب: پلتفرمی یکپارچه برای مدیریت کامل چرخه DevOps.

 

به خاطر داشته باشید:

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

 

برای آشنایی بیشتر با  این مفاهیم به  commit  و push در مستندات گیت رجوع کنید.