با اختلاف مدرن ترین سیستم کنترل نسخه کد یا نرم افزاری که امروز در دنیا میشود نام برد Git هست. این نرم افزار سال 2005 توسط خالق لینوکس یعنی لینوس توروالدز توسعه داده شده. اما قبل از آن به این سوال پاسخ دهیم که سیستم کنترل نسخه یا Version Control System به طور کلی یعنی چی؟
سیستم کنترل نسخه یا Version Control Sytem به اختصار VCS
خیلی وقت ها پیش آمده که میخواهیم دقیق بدانیم که روی پروژه چه مواقعی کار کردیم؟ چه کدی زدیم؟ چه فایلی را تغییر دادیم؟ چه کدهایی حذف یا اضافه کردیم و به طور خلاصه فرآیند توسعه و کدنویسی خود را شخص دیگر را بررسی کنیم. گاهی هم لازم می شوند پروژه را به نسخه های قدیمی برگردانیم که در حالت عادی باید از لحظه لحظه تغییرات از کل پروژه پشتیبانی یا بکاپ تهیه کنیم که کاری وقت گیر و غیر بهینه هست. گاهی میخواهیم یک ویژگی جدید را روی پروژه امتحان کنیم ولی نمیخواهیم کد اصلی دچار تغییر شود به همین دلیل باید از پروژه یک کپی بگیریم و ویژگی جدید را روی آن امتحان کنیم و اگر موفق بود ترکیب از دو پروژه جدا کار وقتگیر و خسته کننده ای هست. حتی در کار تیمی وقتی دو یا چند نفر قرار است روی یک پروژه کار کنند تفکیک وظایف و ترکیب پروژه به صورت یکجا در پروژه های بزرگ به شدت وقتگیر و نشدنی است و حتی در این مدل کار تیمی در آخر مشخص نیست که چه کسی؟ چه کد؟ روی چه فایلی؟ حذف یا اضافه کرده و در کل کد های پروژه چقدر سهیم بوده است. در اینجا سیستم های کنترل نسخه می توانند تمام این مشکلات را برای ما حل کنند. مثلا تک تک تغییراتی که روی پروژه انجام می دهیم با اسم خودمان و توضیحات لازم ثبت میکنیم و به تک تک تغییرات و جزئیات آن به راحتی دسترسی داریم اینکه روی چه فایل دقیقا چه تغییراتی ایجاد کردیم و به چه علت این تغییر را انجام دادیم. خیلی راحت می توانیم به عملیات ثبت قبلی برگردیم و کد را اصلاح کنیم یا تغییرات را ببینیم. اگر ویژگی جدید به ذهنمان رسید نیاز به کپی پوشه پروژه نیست و فقط کافی است از خاصیت شعبه یا Branch این سیتم ها استفاده کنیم و ویژگی جدید را در محیطی کاملا ایزوله از پروژه اصلی انجام دهیم و اگر ناموفق بود بدون هیچ مشکلی آن branch را حذف و اگر موفق بود آن branch را به پروژه اصلی در کمترین زمان به صورت خودکار ترکیب میکنیم. در کار تیمی هر فرد روی بخش خود کار میکند و ثبت خود را انجام میدهد و اینطور مدیر یا اعضای تیم دقیقا متوجه هستند که چه کسی چه فایل را چه تغییری داده و درصد مشارکت در پروژه او چقدر بوده است. و همچنین به صورت مواری رو بخش های مختلف پروژه کار می کنند و فقط کافیست کدهای افراد را به صورت خودکار ترکیب کنیم تا تغییرات افراد روی پروژه اصلی قرار گیرد.
گیت(Git) و ویژگی های آن
همانطور که در ابتدا گفته شد از معروف ترین سیستم های کنترل نسخه میتوان به گیت اشاره کرد که می شود گفت تمام برنامه نویسان بدون استثانا از آن استفاده می کنند و به آن نیاز دارند. چه نیاز به صورتی انفرادی و چه تیمی، حتی مدیران پروژه هم برای برنامه ریزی و بررسی روند عملکرد افراد از این سیستم استفاده می کنند.
ویژگی های Git
به طور کلی میتواند ویژگی های زیر را برای Git نام برد:
گیت هاب یا Github چیست؟
سرویس هایی در بستر اینترنت ارائه می شوند که پروژه های مبتنی بر گیت ها میزبانی می کنند و به این صورت پروژه های مبتنی بر گیت به راحتی روی اینترنت در دسترسی بقیه قرار میگیرد چه به صورت عمومی و چه به صورت خصوصی با دسترسی دادن به افراد خاص یا حتی فقط خودتان حتی این سرویس ها امکاناتی فراتر از گیت را در اختیار شما قرار میدهند که می توانید راحت تر با آن پروژه های مدیریت و زمان بندی و انتشار دهید. به چند نمونه از امکانات این سرویس ها اشاره می کنیم: