گیت ( Git ) چیست؟
من ارسلان میربزرگی، در این مقاله قصد دارم تا شما را با مفهوم گیت ( Git ) در حوزه این نرم افزارها آشنا کنم. نرم افزارهای کنترل پروژه، بخش جدا نشدنی دنیای تکنولوژی امروزی هستند.
گیت یا Git یک ورژن کنترلر ( نرم افزار کنترل نسخه که در واقع از سری نرم افزاری اوپن سورس است ) است که در سال 2005 توسط لینوس توروالدز ساخته به منظور توسعه لینوکس ایجاد شد. در واقع شما میتوانید از Git برای کنترل و مدیریت فرایند توسعه یک پروژه استفاده کنید. همچنین با Git میتوانید هر تغییر دلخواهی را در نسخه های مختلف بررسی کنید و در صورتی که مورد تایید باشند، آنها را روی پروژهی نهایی خود اعمال کنید. برای درک این موضوع، مثالی را با هم بررسی میکنیم.
مثال :
فرض کنید شما مشغول کار بر روی یک وب سایت که با زبان پایتون نوشته شده است، هستید. در شرکت شما هم شخص دیگری میخواهد ابزاری را بطور مستقل برای وب سایت شما کدنویسی کند. شما میخواهید پس از آن این ابزار را به درون پروژه اصلی وصل کنید اما این کار به آن سادگی که شما فکر میکنید، نیست. در مثالی دیگر فرض کنید، پروژهای به نام A در روز شماره 1 آغاز میشود. در روز شماره 2 شخصی میخواهد ابزار B را کدنویسی کرده و به پروژه A اضافه کند. در این حالت، برنامه نویسی ابزار B به مدت 3 روز طول میکشد اما در طی این 3روز، روند پروژه A نیز متوقف نمیشود. در این حالت، 2 شاخه مستقل از یکدیگر در حال توسعه هستند. در این مثال به دلیل همزمانی توسعه 2 قسمت مختلف، ممکن است برنامه نویس ابزار B کد یا تغییرات متفاوتی را نسبت به روز قبل در پروژه A ببیند زیرا برنامه نویس پروژه A در این مدت در حال کار بر روی این پروژه بوده است.
مشاهده کردید که در این مثال، صرفا دو نفر در حال کار بر روی توسعه دو قسمت بودند. قابل تصور است که کار بر روی پروژه بزرگتری که توسط 100 برنامه نویس نوشته میشود و 200 بخش مستقل دارد، به چه صورتی خواهد بود. در چنین پروژههایی، تفکر و تمرکز انسانی، قادر به مدیریت این حجم از کار نیست. باید ابزاری طراحی شود که قادر به کنترل و مدیریت این شرایط باشد. این ابزار همان Git است. اصل ایجاد این ابزار برای مدیریت ورژنهای مختلف لینوکس بود اما بعدها، برنامه نویسان زیادی در سراسر جهان از آن استقبال کردند.

ریپوزیتوری (repository) در git چیست ؟
زمانی که بخواهیم پروژهای را با Git مدیریت کنیم، باید این پروژه به یک ریپوزیتوری انتقال داده شود. ریپوزیتوری در واقع یک مخزن نهایی برای ذخیره تمامی تغییراتی است که قصد اعمال آنها بر روی پروژه را دارید.
انواع ریپوزیتوری در git :
ریپوزیتوری شامل 2 نوع ریپوزیتوری لوکال و ریپوزیتوری ریموت است.
1- ریپوزیتوری لوکال
این که ریپوزیتوری، بر روی کامپیوتر، فلش، سی دی یا هر چیزی که قابل دسترسی از طریق شبکه نیست قرار دارد.
2- ریپوزیتوری ریموت
این که ریپوزیتوری، معمولا بر روی سرور و یا هاست قرار دارد و اشخاص قابلیت دسترسی به آن را دارند. از این مدل ریپوزیتوری می توان به ریپوزیتوریهایی که گیت هاب، گیت لب و … در اختیار شما قرار میدهند، اشاره کرد.

گیت هاب و گیت لب
گیت هاب نام یک سایت است. این سایت در واقع یک سرویس دهنده است و به شما این امکان را میدهد که به طور رایگان و آنلاین ریپوزیتوریهای گیت خود را به اشتراک بگذارید. با یادگیری ابزارها و مفاهیم گیت هاب، میتوانید از امکانات آن برای مدیریت ریپوزیتوری های خود بهره ببرید.
گیت لب نیز امکانات و عملکرد مشابهی با گیت هاب دارد. تنها تفاوت بین این دو سرویس این است که گیت لب، قابلیت دانلود و پیاده کردن بر روی سرورهای شخصی را دارد.