گیت چیست؟ چرا باید از Git استفاده کنیم و روش نصب آن

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

این مقاله اولین مقاله از سری مقالات آشنایی با Git میباشد.

اگر با سیستمهای کنترل ورژن قدیمی همچون SVN و یا CVS قبلا کار کرده اید قبل از ادامه مطالعه این مقاله تمامی اطلاعاتی که در رابطه با این سیستمها دارید را کنار بگذارید زیرا Git از پایه دوباره طراحی شده است و خیلی کم در طراحی آن از سیستمهای کنترل ورژن دیگر الهام گرفته شده است.

توسعه نرم افزار به صورت توزیع شده یا distributed از نظر اصول با سیستم های کنترل ورژن مرکزی یا centeral متفاوت میباشد. به جای اینکه تمامی فایلهای پروژه در یک repository مرکزی ذخیره شوند، Git به هر برنامه نویس تیم یک کپی کامل از repository را اختصاص میدهد. برای ایجاد امکان همکاری بین برنامه نویسان در یک پروژه Git قابلیت به اشتراک گذاری تغییرات بر روی repository های برنامه نویسان مختلف با یکدیگر را فراهم آورده است.

 

دارا بودن یک نسخه کامل از repository بر روی رایانه هر برنامه نویس تاثیر عمیقی بر حلقه تولید نرم افزار خواهد داشت برخی از مزایای آن عبارتند از:

سرعت اجرای دستورات

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

پایداری

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

جداسازی

هر نسخه از repository چه بر روی رایانه برنامه نویس باشد و چه بر روی سرور در بردارنده تاریخچه کامل پروژه میباشد. از آنجا که تغییرات اعمال شده بر روی repository های local سریعاً منتشر نمیشوند این امکان به برنامه نویسان داده میشود که قبل از منتشر کردن کد خود از درستی آن اطمینان حاصل کنند و آزادانه به تست آن بپردازند.

یکپارچه سازی

از آنجا که تاریخچه پروژه در هر کپی از repository موجود میباشد امکان ردیابی تغییرات هر کپی موجود میباشد. به محض اینکه شما یک کامیت به صورت بومی یا local commit را اعمال کنید repository شما با دیگر repository ها از sync خارج میشود. Git با استفاده از تاریخچه تغییرات local اقدام به یکپارچه سازی کدهای مختلف برنامه نویسان مختلف میکند.

آشنایی با ساختار Git

هر repository دارای چهار بخش میباشد:

  • پوشه نگهدارنده پروژه
  • Staging area
  • تاریخچه commit ها
  • شاخه های توسعه پروژه

پوشه حاوی پروژه یا working directory

پوشه پروژه محل نگهداری فایلهای پروژه میباشد. در این پوشه شما اقدام به ویرایش، کامپایل و کد نویسی پروژه میکنید. پوشه حاوی پروژه فرق چندانی با پوشه های معمولی ندارد به جز اینکه شما در آنها دسترسی به فرمانهای گوناگون برای ثبت، ویرایش و انتقال محتوای پوشه به دیگر repository ها را دارید.

 

Staging Area

Staging area مرحله ایست که تغییرات روی پروژه قبل از ثبت در تاریخچه پروژه در آن قرار میگیرند. در حقیقت این لایه بین پوشه پروژه و تاریخچه پروژه قرار دارد. به جای اینکه مجبور باشید تمامی تغییرات را به یکباره commit کنید شما میتوانید تغییرات را گروه بندی کنید و سپس آنها را در تاریخچه ثبت کنید. توجه داشته باشید که تغییرات ذخیره شده در staging area هنوز جزء پروژه نیستند و بین دیگر نسخه های repository به اشتراک گذاشته نمیشوند.

 

تاریخچه کامیتها

زمانی که شما تغییرات اعمال شده بر روی نسخه local پروژه را تنظیم کردید میتوانید تغییرات حاصله را commit کنید و آنها را در تاریخچه پروژه ثبت کنید. رکوردهای موجود در تاریخچه توسط git فقط مدیریت میشوند و تغییری بر روی آنها اعمال نمیشود. البته ابزارهایی برای ویرایش تاریخچه به صورت دستی موجود میباشد.

 

شاخه ها یا Development Branches

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

توجه داشته باشید که branch های git مانند دیگر سیستم های مدیریت ورژن مرکزی عمل نمیکنند. ساخت، ترکیب و اشتراک آنها بسیار ساده تر میباشد. در نتیجه اکثر برنامه نویسان از شاخه ها برای هر کاری در پروژه استفاده میکنند از پیاده سازی طولانی مدت برخی از قابلیتهای پروژه گرفته تا رفع اشکالات پنج دقیقه ای.

روش نصب Git

حال وقت آن است که کار با Git را شروع کنیم. اول از هر چیز می‌بایست Git را نصب کرد. روشهای مختلفی برای این کار وجود دارد؛ دو مورد از رایج‌ترین این روش‌ها نصب از طریق سورس یا نصب به واسطه بسته‌های موجودی است که برای پلتفرم موردنظر شما تهیه شده است.

نصب از طریق سورس

اگر امکان نصب از طریق سورس برای شما وجود دارد، این روش مناسب‌ترین روش جهت نصب می‌باشد، زیرا شما بعد از نصب آخرین نسخه نرم‌افزار را در اختیار خواهید داشت. در هر نسخه از Git سعی شده است که تا در رابط کاربری بهبودهایی حاصل شود، بنابراین در اختیار داشتن آخرین نسخه بهترین گزینه است البته اگر با کامپایل سورس نرم‌افزار مشکلی نداشته باشید. همچنین معمولاً مخازن نرم افزاری اکثر توزیعهای لینوکس دربردارنده بسته‌هایی با نسخه‌های قدیمی هستند؛ بنابراین در صورتی که شما توسعه دهنده‌ای به روز هستید یا از backportها استفاده می‌کنید، نصب از طریق سورس بهترین انتخاب برای شما است.

برای نصب Git نیاز به کتابخانه های curl، zlib، openssl، expat و libiconv است که Git نیازمند آنهاست. به عنوان مثال، اگر روی سیستمی کار می‌کنید که yum (مانند Fedora) یا apt-get (مانند سیستم های مبتنی بر Debian) دارد، می‌توانید برای نصب این بسته‌های نیازمندی از دستورهای ذیل استفاده کنید:

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

حال که تمامی نیازمندی‌ها نصب گردید، می‌توان آخرین نسخه Git را از وب سایت آن دانلود کرد:

http://git-scm.com/download

و آن را کامپایل و نصب نمود:

$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

بعد از کامل شدن این مراحل می‌توان از خود Git برای دریافت آپدیت‌های Git استفاده کرد:

$ git clone git://git.kernel.org/pub/scm/git/git.git

نصب بر روی لینوکس

اگر قصد نصب Git بر روی لینوکس به واسطه یک نصاب باینری را دارید، می‌توانید این کار را از طریق ابزار مدیریت بسته های نرم‌افزاری که همراه توزیع موردنظر شما ارائه می‌شود انجام دهید. اگر توزیع شما Fedora است، می‌توانید از yum استفاده کنید:

$ yum install git-core

یا اگر توزیعی مبتنی بر Debian مانند Ubuntu دارید، می‌توانید از apt-get استفاده کنید:

$ apt-get install git

نصب برروی Mac

برای نصب برروی Mac دو روش آسان وجود دارد. آسان‌ترین روش استفاده از نصاب گرافیکی Git است، که امکان دانلود آن از صفحه Google Code وجود دارد (تصویر 1-7):

http://code.google.com/p/git-osx-installer

 



 

روش دیگر نصب از طریق MacPortها (http://www.macports.org) است. اگر MacPortها را نصب شده روی سیستم خود دارید، می‌توانید Git را با دستور ذیل نصب کنید

$ sudo port install git-core +svn +doc +bash_completion +gitweb

نیازی به افزودن تمامی اضافات نیست، ولی شاید برای استفاده از Git به همراه مخازن Subversion، احتمالاً افزودن +svn گزینه مناسبی است.

نصب بر روی ویندوز

نصب Git روی ویندوز بسیار آسان است. پروژه msysGit یکی از آسان‌ترین مراحل نصب را دارد. تنها نیاز است که فایل نصاب exe را از صفحه GitHub دانلود، و آن را اجرا کرد:

http://msysgit.github.com/

بعد از اتمام نصب، هم نسخه خط فرمان (شامل SSH client که در ادامه مشاهده خواهد شد که ابزاری کارآمد است) و هم رابط گرافیکی استاندارد را در اختیار خواهید داشت.

نکته برای کابران ویندوز: کاربر باید جهت کار با Git از پوسته ارائه شده به همراه msysGit (به سبک Unix) استفاده کند، تا بتواند دستورات چند خطی پیچیده‌ای که در این کتاب آورده شده را اجرا کند. اگر به هر دلیلی، نیاز به استفاده از پوسته خود ویندوز/کنسول خط فرمان، شدید باید در عوض تک کوت (simple quote) از دابل کوت (برای پارامترهایی که در بر دارنده فاصله هستند) استفاده کنید و باید پارامترهای موجود در آخرین خط که با circumflex accent (^) به پایان می‌رسند را داخل کوت قرار دهید، زیرا این علامت، نشانگر ادامه دار بودن خط در ویندوز است.