گیت (Git) چیست؟

گیت (به لاتین Git)، یک سیستم کنترل نسخه (Version Control) یا کنترل ورژن است. سیستم های کنترل نسخه (کنترل ورژن)، در برنامه نویسی و مهندسی نرم افزار کاربردهای فراوانی دارند.

برای مثال، فرض کنید یک برنامه نویس هستید و در حال نوشتن یک وب سایت می باشید. شما کد نویسی وب سایت را انجام میدهید و سایت را آماده تحویل میکنید. در این جا، یک نسخه از وب سایت خود را در سیستم Version Control ذخیره کرده (نام این نسخه را “نسخه شماره ۱” میگذارید) و کار برنامه نویسی وب سایت را ادامه می دهید. حال اگر بعد از مدتی (به دلیل اینکه مثلا یک فایل را به اشتباه پاک کرده اید) خواستید، به نسخه شماره ۱، برگردید، سیستم کنترل ورژن، این کار را برای شما به راحتی انجام می دهد.

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

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

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

گیت (Git)، در مقایسه با Subversion یا سیستم های کنترل ورژن دیگر، به نظر کامل تر و به روز تر می رسد. در این سیستم (به دلیل توزیع شدگی)، Single Point Of Failure وجود ندارد. به این معنی که، یک کپی کامل (شامل تمامی نسخه های یک پروژه)، بر روی سیستم هر کدام از برنامه نویس ها، ذخیره شده، و در صورت خرابی سرور، خللی در کار برنامه نویس ها و مهندسان نرم افزار ایجاد نمیکند.

مطالعه بیشتر در اینجا و اینجا.