گیت چیست؟

گیت (به انگلیسی: Git) یک نرمافزار کنترل نسخه (version control) و از مدل نرمافزارهای آزاد و متنباز برای بازنگری کد منبع توزیع شده و مدیریت منبع کد است که برای دنبال کردن تغییر فایلهای کامپیوتری و دنبال کردن کارهای انجام شده روی آنها توسط افراد مختلف است. هدف اولیه این نرمافزار برای استفاده در پروژههای نرمافزاری بودهاست ولی میتوان از آن تنها برای دنبال کردن تغییر فایلها هم استفاده کرد.
گیت ابتدا برای توسعهٔ لینوکس توسط لینوس تروالدز به وجود آمد و اکنون پروژههای فراوانی از آن الهام گرفتهاند. هر دایرکتوری کاری در گیت یک مخزن کامل با تاریخچهٔ کامل تغییرها و قابلیت بازنگری آنها است و برای کار با آن نیازی به دسترسی به شبکه یا سرور مرکزی وجود ندارد. گیت یک نرمافزار آزاد است که تحت مجوز GPL توزیع شده است.
لینوس تروالدز در مورد نام گیت گفته است که، در زبان انگلیسی اصطلاحی است برای انسانی احمق و ناخوشایند. او ادامه می دهد که: من فردی از خود راضی هستم و تمام پروژههایم را به افتخار خودم نامگذاری نمودهام. اول لینوکس و الان هم گیت. در صفحه راهنمای گیت در شل لینوکس، گیت به عنوان یک ردیاب محتوای احمق توصیف شده است.
تاریخچه
توسعهٔ گیت زمانی شروع شد که بسیاری از توسعهدهندگان لینوکس، در استفاده از بیت کیپر، که یک سیستم مدیریت کد میباشد و پیش از این برای توسعه هستهٔ لینوکس استفاده میشد، امتناع ورزیدند. نگهدارندهٔ کپی رایت، لری مک وی، حق استفادهٔ رایگان از این نرمافزار را پس از آن که اندرو تریدگل به روش مهندسی معکوس میخواست که پروتکلهای بیت کیپر را پیاده کند، برداشت. توروالدز نیاز به سیستم توزیع شدهای داشت که بتواند از آن همانند بیت کیپر استفاده کند، ولی هیچکدام از نرمافزارهای آزاد را مبتنی بر نیازهای خود ندید، به خصوص نیاز او به کارایی بالا.
تا قبل از ۲۰۰۲ برای گسترش کرنل از هیچ نرمافزار کنترل نسخه استفاده نمیشد و هر فردی که در گسترش کرنل نقش داشت به شکل خصوصی از نرمافزارهایی مانند SVN/CVS استفاده میکرد و دلیلش آن بود که هیچکدام از نرمافزارهای کنترل نسخه این توانایی را نداشتند که حجم تغییرهایی که در لینوکس اتفاق میافتاد را پشتیبانی کنند. در این سال لینوس از BitKeeper به عنوان نرمافزار کنترل نسخه رسمی لینوکس استفاده کرد که به گسترش دهندههای کرنل اجازه میداد بصورت رایگان از BitKeeper استفاده کنند.
در سال ۲۰۰۵ لینوس شروع به جستجو برای یافتن جایگزینی مناسب کرد. اما نرمافزار مناسبی پیدا نکرد که بتواند حجم تغییر لینوکس را مدیریت کنند و این کمبود سبب شد تا توروالدز به فکر نوشتن یک نرمافزار کنترل نسخه بیفتد. توسعه گیت در ماه آوریل سال ۲۰۰۵ آغاز شد. ۲ ماه بعد گیت به عنوان نرمافزار کنترل نسخه رسمی برای گسترش لینوکس مورد استفاده قرار گرفت.
در طراحی گیت از نرمافزارهای Bitkeeper و Monotone الهام گرفته شده است. گیت در ابتدا بصورت یک نرم نرمافزار کنترل نسخه سطح پایین نوشته شد به این صورت که دیگران بتوانند برای آن نرمافزار لایه رویی بنویسند. با این که گیت از bitkeeper تأثیرها و الهام زیادی داشته است در آن تلاش شده که روشهای استفاده شده منحصر به فرد باشند.
چرا کنترل نسخه مهم است؟
نرم افزار کنترل نسخه به شما اجاره می دهد تا نسخه های مختلفی از پروژه ی خود داشته باشید و گزارشی نیز از تغییرات اعمال شده بر روی پروژه به شما می دهد. با این سرویس به سادگی می توانید هر موقع که خواستید کد های قبلی را بازگردانید، این امکان در زمانی که پروژه با مشکلی برخورد کرده است بسیار کارآمد خواهد بود.
خوبی این نوع سرویس این است که توسعه دهندگان مختلفی می توانند بر روی یک پروژه کار کنند و هر تغییر نیز به نام همان توسعه دهنده ثبت می گردد. بدی این سرویس هم این است که اگر سرور مورد نظر با مشکل مواجه شود، دیگر امکان اعمال تغییر در بانک اطلاعات مرکزی وجود ندارد و اگر اطلاعات بانک اطلاعات مرکزی از بین برود، توسعه دهندگان تنها آخرین نسخه از کد های خود را در اختیار خواهند داشت.
روش دیگری نیز وجود دارد. روشی که به آن سیستم کنترل نسخه توزیع شده یا Distributed version control systems می گویند. در این روش دیگر توسعه دهندگان تنها آخرین نسخه تغییرات را ندارند بلکه بسته کاملی از تغییرات ثبت شده را در اختیار دارند. هر توسعه دهنده همیشه یک نسخه کامل از فایل ها را به همراه تغییرات مربوطه در اختیار دارد.
نرم افزار کنترل نسخه مرکزی همچنان استفاده می شود اما اگر زمانی سرور مرکزی با مشکل مواجه شود و اطلاعات از بین برود، از طریق این سیستم یک نسخه بک آپ از تمامی فایل ها و تغییرات از طریق یکی از توسعه دهنده گان که آخرین تغییرات را دارد بر روی سرور بارگذاری می شود. اگر در نسخه ای چند فایل هیچ تغییری نکند، گیت بجای بارگذاری آن فایل، آن را به نسخه قبل لینک می کند. با این کار سرعت عملکرد این سرویس بسیار افزایش می یابد.
گیت هاب چیست؟
گیتهاب (به انگلیسی: GitHub) یک سرویس میزبانی وب برای پروژههایی است که از سیستم سورس کنترل گیت استفاده میکنند. استفاده از آن تا ۵ مخزن (Repository) عمومی رایگان است.





