گیت چیه و چرا آنقدر معروفه؟

گیت محبوب‌ترین سیستم کنترل نسخه (Version Control System) هستش. یک Version Control System تغییراتی که روی کدمون در طول زمان اعمال کردیم رو در دیتابیسی به اسمِ repository ضبط می‌کنه. می‌تونیم به تاریخچه‌ی پروژمون نگاه بندازیم و ببینیم چه زمان، چه کسی و به چه دلیلی، تغییرات اعمال شده. و اگر چیزی رو خراب کرده باشیم خیلی راحت می‌تونیم پروژه‌مون رو به وضعیت‌هایِ قبل‌تر برگردونیم.

img

بدون یک Version Control System باید پوشه‌های مختلفی بسازیم که کارمون رو خیلی کُند می‌کنه و اصلاً مقیاس‌پذیر هم نیست مخصوصاً اگر چندین نفر رویِ پروژه کار کنن. همیشه باید آخرین نسخه از کدها رو با کمک ایمیل یا یه همچین چیزی ردوبدل کنین و بعد دستی تغییرات رو merge کنین.

img

به طور خلاصه، در یک Version Control System می‌تونیم تاریخچه‌ی پروژه‌مون رو ردیابی کنیم و با همدیگه کار کنیم.

سیستم‌هایِ کنترل نسخه به دو دسته تقسیم می‌شن:

Centeralized

در سیستمِ Centeralized تمامیِ اعضایِ‌ تیم به یک سرور مرکزی متصل می‌شن تا آخرین نسخه از کد رو داشته باشن و تغییرات رو با یکدیگر به اشتراک بذارن. مثلِ ورژن‌کنترل‌هایِ Microsoft Team Foundation Server و Subversion.

مشکل این نوع سیستم اینه که اگر سرورِ مرکزی آفلاین بشه نمی‌تونیم مشارکت کنیم و یا snapshotهایی از پروژه‌مون رو ذخیره کنیم. پس باید تا زمانی که سرور آنلاین بشه صبر کنیم.

Distributed

در سیستم‌هایِ Distributed این مشکلات رو نداریم. هر عضوی از تیم یک کپی از پروژه با تاریخچه‌‌ش رو دستگاهش داره. پس می‌تونیم snapshotهایی از پروژه‌مون رو در سیستمِ‌شخصی‌مون ذخیره کنیم. اگر سرورهایِ مرکزی آفلاین بودن هم می‌تونیم کارمون رو مستقیماً با بقیه سینک کنیم. مثلِ ورژن‌کنترل‌هایِ Git و Mercurial.

از تمام این ورژن‌کنترل‌ها، گیت محبوب‌ترین ورژن‌کنترل هست. چون رایگان، متن‌باز، خیلی سریع و مقیاس‌پذیر هست. عمل‌هایی مثلِ branching و merging در ورژن‌کنترل‌هایی مثلِ subversion و یا tfs بسیار سخت و کند هستند. اما این فرایند‌ها در گیت خیلی سریع هستن. بعداً در موردش صحبت خواهیم کرد.

بیشتر از نود درصد پروژه‌هایِ نرم‌افزاری دنیا از گیت استفاده می‌کنن. پس اگر دنبال یه شغل به عنوانِ توسعه‌دهنده‌ی نرم‌افزار هستین، گیت یکی از مهارت‌هایی هست که باید در رزومه‌تون داشته باشین. باید کامل بلدش باشین و بدونین چطور کار می‌کنه و چطور ازش برای ردیابی تاریخچه‌ی پروژه (Track History) و مشارکت با بقیه (Work Together) به صورتِ مؤثر استفاده کنین و این دقیقاً چیزیه که در این دوره آموزش خواهید دید.