سامانه کنترل نسخه گیت (Git) چیست؟
پروژه متنباز گیت یکی از پر استفادهترین سامانههای کنترل نسخه در جهان است. همانگونه که اشاره شد سامانه کنترل نسخه گیت بر مبنای معماری توزیعی طراحی شده و گونهای از سامانههای کنترل نسخه توزیعی (Distributed Version Control System) است. گیت یک مخزن در اختیار هر توسعهدهندهای قرار میدهد که تاریخچه تمام تغییرات در آن قرار دارد. گیت ضمن ارائه یک الگوی توزیعی و انعطافپذیر، از مکانیزمهای امنیتی قدرتمندی برای محافظت از کدهای توسعهدهندگان استفاده میکند.
گیت (Git) یک سامانه کنترل نسخه (VCS) سرنام Version Control System رایگان و متنباز است. سامانه فوق در سال 2005 میلادی توسط لینوس توروالدز بنیانگذار کرنل لینوکس طراحی شد. برخلاف، سامانههای کنترل نسخه دیگر همچون آپاچی سابورژن که به شکل سامانه نسخه همروند (Concurrent Versions System) طراحی شدهاند، سامانه کنترل نسخه گیت به شکل توزیعی (Distributed) طراحی شده است. به همین دلیل هر توسعهدهندهای میتواند به تاریخچه کامل مخزن خود به شکل محلی دسترسی داشته باشد. در روش فوق فرآیند کپی اولیه از مخزن کندتر انجام میشود، اما در ادامه فرآیندهای عملیاتی شبیه به اعمال (Commit)، ادغام (Merge)، ثبت سوابق (Log، Diff و Blame) با سرعت بیشتری انجام شوند. اگر با اصطلاحات و مفاهیمی که به آنها اشاره شد آشنایی ندارید یا شناختی از گیت ندارید، نگران نباشید. در این مقاله قصد داریم به شکل جامع و به زبانی ساده به واکاوی این مفاهیم بپردازیم. قبل از شروع مبحث لازم است به این موضوع اشاره کنیم که به عنوان یک برنامهنویس حرفهای مجبور هستید با یک سامانه کنترل نسخه آشنا باشید، زیرا تیمهای بزرگ نرمافزاری در ایران یا سایر کشورها متشکل از برنامهنویسانی هستند که برای پیشبرد اهداف پروژه از یک سامانه کنترل نسخه استفاده میکنند؛ در نتیجه اگر به دنبال پیدا کردن شغلی در یک تیم برنامهنویسی هستید، تسلط بر گیت پیششرط مهمی است. پس بهتر است این مطلب را تا انتها به دقت مطالعه کنید.گیت در ارتباط با مفاهیمی همچون انشعاب (Branching)، ادغام (Merging) و بازنویسی تاریخچه مخزن، پشتیبانی خوبی از توسعهدهندگان به عمل میآورد. ویژگیهای یاد شده جریانهای کاری و ابزارهای خلاقانهای را پدید آوردند. دریافت تغییرات از روی تاریخچه (Pull Requests) از قابلیتهای محبوبی است که به تیمهای توسعه اجازه میدهد به بهترین شکل با یکدیگر به تعامل بپردازند (از طریق انشعابهای سامانه کنترل نسخه) و کدها را به شکل کارآمدی بازبینی کنند.
عملکرد
عملکرد گیت در مقایسه با نمونههای مشابه بهتر است. اعمال تغییرات جدید، انشعاب، ادغام و قابلیت مقایسه نسخههای قبلی با تمرکز بر ارائه بهترین عملکرد از ویژگیهای شاخص گیت است. الگوریتمهای شکلدهنده گیت هوشمند هستند و از دانش عمیق پیرامون ویژگیهای رایج درختهای فایل کد منبع، چگونگی ویرایش آنها در گذر زمان و چگونگی در دسترس بودن الگوها سود میبرند. گیت در زمان تعیین اینکه ذخیرهسازی و تاریخچه نسخه درخت فایل چه چیزی است، به وسیله نام فایل گمراه نشده و روی محتوای فایل متمرکز است. قالب شی فایلهای مخزن گیت از ترکیب کدبندی دلتا (Delta Encoding)، ذخیرهسازی تفاوت محتوا، مقایسه و ذخیرهسازی صریح محتوای پوشهها و اشیا فراداده نسخه استفاده میکند. توزیعی بودن به میزان قابل توجهی به بهبود کارایی سامانه کنترل نسخه کمک کرده است. بهطور مثال، توسعهدهندهای تغییراتی در کد منبع ایجاد و ویژگیهایی را به نسخه بعدی محصول که نگارش 2 است اضافه میکند، در ادامه تغییرات را با یک پیام توصیفی درج میکند. در ادامه روی ویژگی دیگری کار میکند و این تغییرات را ثبت میکند. یک چنین فرآیندهایی به عنوان تاریخچه نسخه ذخیرهسازی میشوند. در ادامه توسعهدهنده به انشعاب 1.3 نرمافزار مراجعه میکند تا باگهایی را که تنها روی نسخه قدیمی تاثیرگذار هستند حل کند. هدف این است که باگهای نگارش 1.31. قبل از آنکه نگارش 2.0 آماده عرضه شود برطرف شوند. اکنون توسعهدهنده میتواند به انشعاب 2 بازگشته و کار روی ویژگیهای جدید نگارش 2.0 را بدون نیاز به دسترسی شبکه انجام دهد. زمانی که کدنویسیها تکمیل و آماده ارسال شدند و دسترسی به شبکه فراهم شد همه تغییرات با اجرای یک دستور Push در مخزن راه دور اعمال میشوند.
امنیت
در سامانه کنترل نسخه گیت، بالاترین اولویت حفظ یکپارچگی کدهای اصلی مدیریت شده در مخازن است. محتوای فایلها، ارتباط میان فایلها و پوشهها، نسخهها، برچسبها و کامیتها در مخازن گیت با الگوریتم رمزنگاری درهمساز که SHA1 نامیده میشود محافظت میشوند. الگوریتم فوق مانع از آن میشود تا کدها و تاریخچه مربوطه به تغییرات به شکل تصادفی یا با انجام فعالیتهای مخرب تغییر کنند، در نتیجه به تیمهای توسعهدهنده تضمین میدهد که تاریخچه پروژهها به شکل کامل قابل پیگیری است.
انعطافپذیری
یکی از اهداف اصلی گیت انعطافپذیری است. گیت در ارتباط با مباحثی همچون جریانهای کاری غیرخطی توسعه، بهبود راندمان در پروژههای کوچک و بزرگ و سازگاری با سامانهها و پروتکلهای موجود بیشترین انعطافپذیری را در اختیار تیمهای توسعه قرار میدهد. گیت به گونهای طراحی شده تا از انشعابها و برچسبها به عنوان قابلیتهای اصلی موردنیاز تیمهای توسعه پشتیبانی کند و برخلاف سامانههای کنترل نسخه مشابه که هرگونه عملیاتی شبیه به ادغام یا بازگردانی تغییرات را روی انشعابها و برچسبها اعمال میکنند، تغییرات را به عنوان بخشی از تاریخچه تغییرات ذخیره میکند.
کنترل نسخه با گیت
انعطافپذیری بالای گیت باعث شده این سامانه کنترل نسخه برای تمامی تیمهای نرمافزاری که هر یک متدولوژیهای نرمافزاری خاص خود را دارند قابل استفاده باشد، به گونهای که گیت به عنوان یک استاندارد دیفکتو به رسمیت شناخته میشود. امروزه بسیاری از ابزارهای نرمافزاری ثالث و سرویسها با گیت یکپارچه شدهاند که از آن جمله میتوان به محیطهای توسعه یکپارچه (IDE)، سامانههای کنترل نسخه توزیعی کلاینت دسکتاپ شبیه به Sourcetree، نرمافزارهای پیگیری مشکلات و وضعیت پروژهها شبیه به جیرا و سرویس میزبانی کد بیتباکت اشاره کرد. متنباز بودن به گیت اجازه داده است در طول این سالها پیشرفتههای قابل توجهی داشته باشد. به لطف جامعه بزرگی از توسعهدهندگان و مستندات عالی تهیه شده برای گیت، توسعهدهندگانی بدون تجربه کار با گیت، میتوانند با مراجعه به مستندات متنی و تصویری ارائه شده و با صرف وقت، کار با گیت را یاد بگیرند. متنباز بودن مزیت مهم دیگری نیز به همراه دارد و به توسعهدهندگانی که به عنوان سرگرمی کدنویسی میکنند اجازه میدهد بدون پرداخت هزینه از گیت استفاده کنند.
انتقادها از گیت
یکی از اصلیترین انتقادات پیرامون گیت، فرآیند یادگیری سخت است. برخی از اصطلاحات گیت برای افراد تازهکار نامفهوم بوده و متفاوت از اصطلاحات استفاده شده در SVN و CVS است. با اینحال، گیت قابلیتهای قدرتمندی در اختیار توسعهدهندگان و تیمهای طراحی قرار میدهد که فرآیند زمانبر بودن یادگیری را توجیه میکند. تیمهایی که سابقه کار با سامانههای کنترل نسخه غیرتوزیعی را دارند زمانی که به گیت مهاجرت میکنند به یک قابلیت مهم که یک مخزن مرکزی است دسترسی خواهند داشت. با توجه به اینکه گیت به عنوان یک سیستم کنترل نسخه توزیعی طراحی شده، اجازه میدهد یک مخزن رسمی و استاندارد در اختیار داشت تا تمامی تغییرات طراحی نرمافزارها در آن ذخیره شود. در این حالت مخزن هر توسعهدهندهای به شکل کامل در اختیارش قرار دارد و فرآیندهای کاریش به دلیل دسترسپذیری و کارایی سرور مرکزی محدود نمیشود.
چرا سازمانها باید از گیت استفاده کنند؟
عزیمت از یک سیستم کنترل نسخه متمرکز به سمت یک سامانه کنترل نسخه توزیعی (گیت) روند ساخت نرمافزارها و عملکرد تیمهای نرمافزارهای را تحتالشعاع قرار میدهد. سازمانهایی که به نرمافزارهای سازمانی برای انجام فعالیتهای تجاری متکی هستند با جایگزینی یک جریان کاری جدید تغییراتی در الگوهای تجاری خود مشاهده میکنند. با این توصیف بهکارگیری گیت برای سازمانها و دپارتمانهای عملیاتی (تیم بازاریابی، توسعه، تجاری) چه مزایایی به همراه دارد؟ اصل مهمی وجود که بسیاری از شرکتها و سازمانها از آن غافل هستند، گیت تنها محدود به توسعه نرمافزاری چابک نیست و برای تمامی کسبوکارهای چابک قابل استفاده است.
قابلیتهای گیت برای توسعهدهندگان
از مهمترین مزایای گیت برای توسعهدهندگان به موارد زیر میتوان اشاره کرد:
جریان کاری انشعاب ویژگی (Feature Branch Workflow)
قابلیتهای انشعاب یکی از نقاط برجسته گیت است. در مقایسه با سامانههای کنترل نسخه متمرکز، انشعابهای گیت پیچیده نبوده و ادغام به سادهترین شکل انجام میشود. به همین دلیل جریان کاری انشعاب ویژگی محبوبیت زیادی نزد کاربران گیت دارد. انشعابهای ویژه، یک محیط ایزوله برای تغییرات اعمال شده روی پایگاه کدها ارائه میکند. زمانی که توسعهدهندهای تصمیم میگیرد یک فرآیند کاری را آغاز کند، فارغ از بزرگی یا کوچکی، یک انشعاب جدید میسازد. رویکرد فوق این اطمینان خاطر را میدهد که انشعاب اصلی همیشه کد کیفیت-تولید (production-quality) خواهد داشت. بهکارگیری انشعابهای اصلی نه تنها از ویرایش مستقیم کدهای تولید اطمینان بخشتر هستند، بلکه مزایای سازمانی شاخصی دارند. این انشعابها به توسعهدهندگان اجازه میدهند فرآیند توسعه را مشابه با بکلوگ (Backlog) چابک انجام دهند. بهطور مثال، میتوان خطمشی مشخصی ایجاد کرد که بر مبنای آن هر تیکت جیرا (Jira Ticket) در انشعاب ویژگی خودش نمایش داده شود.
توسعه توزیعی
در SVN، توسعهدهندگان یک کپی در حال کار دریافت میکنند که در نهایت به یک مخزن مرکزی منفرد باز میگردد، در گیت توسعهدهندگان به یک سیستم کنترل نسخه توزیعی دسترسی دارند که به جای یک کپی در حال کار، هر توسعهدهنده مخزن محلی خود را دریافت میکند که شامل تاریخچه کامل کامیتها است. شکل1 تفاوت دو سامانه توزیعی و متمرکز را نشان میدهد. دسترسی به تاریخچه کامل باعث میشود تا گیت سریع شود، زیرا توسعهدهنده برای ساخت کامیتها، بررسی نسخههای پیشین یک فایل یا انجام دیف (Diff) میان کامیتها نیازی به یک ارتباط اینترنتی ندارد. رویکرد توزیعی، اجازه میدهد تغییر گسترشپذیری به شکل سادهتری انجام شود؛ بهطور مثال در سامانههای SVN اگر توسعهدهندهای یک انشعاب را بشکند، سایر توسعهدهندگان مادامی که مشکل برطرف نشود، نمیتوانند تغییرات را به سیستم وارد کنند. گیت چنین مشکلی را ندارد و اجازه میدهد توسعهدهندگان روی مخازن محلی خود کار کنند. توسعه توزیعی یک محیط قابل اعتمادتر ارائه میکند، زیرا اگر توسعهدهندهای مخزن خود را پاک کند، به سادگی میتوان مخزن فرد دیگری را کپی کرد و دوباره کار را ادامه داد.
Pull Requests
بخش عمدهای از ابزارهای مدیریت کد منبع شبیه به بیتباکت، عملکرد هسته گیت را با درخواست دریافت (Pull Request) بهبود دادهاند.
Pull Requests مکانیزمی ارائه میکند تا درخواستی برای یک توسعهدهنده ارسال کرد تا یکی از انشعابها را در مخزن خودش ادغام کند. رویکرد فوق، روند پیگیری تغییرات پروژه را سادهتر میکند و به توسعهدهندگان اجازه میدهد قبل از یکپارچهسازی کارهایشان با کل پایگاه داده نقطه نظرات خود را ارائه کنند. مکانیزم Pull Request کارکرد دیگری نیز دارد، اگر توسعهدهندهای در کار خود با مشکلی روبرو شود با ایجاد یک درخواست میتواند از سایر اعضا تیم درخواست کمک کند. این تکنیک به ویژه برای توسعهدهندگان تازهکاری که تازه جذب یک تیم برنامهنویسی شدهاند مفید است و مانع از آن میشود تا کدهای ضعیف یا اشتباه کل پروژه را با مشکل روبرو کنند.
چرخه انتشار سریع
ترکیب عواملی همچون انشعابهای ویژگی (feature branches)، توسعه توزیعی (distributed development)، جامعه پایدار (stable community) از توسعهدهندگان و درخواست دریافت (Pull Request) چرخه انتشار را سریعتر میکند. قابلیتهای یاد شده، جریان کاری چابک را تسهیل میکنند و توسعهدهندگان را تشویق میکنند تا تغییرات کوچکتر را در اولین فرصت بهاشتراک قرار دهند. تغییرات میتواند فرآیند توسعه را نسبت به انتشار یکپارچه سامانههای کنترل نسخه مرکزی سریعتر به سمت جلو هدایت کند. گیت به خوبی میتواند با محیطهای توسعه مبتنی بر یکپارچهسازی و تحویل مداوم کار کند. هوکها (Hook) در گیت به توسعهدهندگان اجازه میدهند زمانیکه یک رویداد خاص در یک مخزن اتفاق افتاد، اسکریپتهایی را اجرا کنند. توسعهدهندگان میتوانند کدی را از انشعابهای خاصی برای سرورهای دیگر ایجاد یا در آنها مستقر کنند.
شکل 1
گیت در ارتباط با مدیریت محصول
سیستم کنترل نسخه گیت در ارتباط با مدیریت محصول به سازمانها اجازه میدهد با انتشار منظمتر و عرضه بهروزرسانیهای سریعتر به بازخوردهای مشتریان در ارتباط با محصولات نرمافزاری پاسخ دهند. یک مثال روشن در این زمینه مرورگر کروم شرکت گوگل است که توانسته بر مبنای یک چنین چرخهای به بازخوردهای کاربران پاسخ دهد. گیت به سازمانها اجازه میدهد ویژگیهای غیرکاربردی که مخاطب چندانی ندارند را کنار گذاشته و در مقابل روی قابلیتهایی متمرکز شوند که موردنیاز مشتریان است. شکل2 این موضوع را نشان میدهد. انشعاب ویژگی هنگام تغییر اولویتها، انعطافپذیری زیادی در اختیار سازمانها قرار میدهد. بهطور مثال، توسعهدهندهای در نیمهراه یک چرخه انتشار تصمیم میگیرد عرضه یک ویژگی را به دلیل یک ویژگی حیاتیتر به تاخیر بیاندارند، در این حالت پروژه با مشکل خاصی روبرو نمیشود، زیرا تیم میتواند ویژگی به تاخیر افتاده را در انشعاب قرار داده و در زمان مناسبی به سراغ آن بیاید. این همان کاری است که تیم توسعهدهنده سیستمعامل ویندوز 10 انجام میدهند و گاهی اوقات بر خلاف اطلاعرسانی قبلی تصمیم میگیرند یک ویژگی جدید در زمان دیگری به ویندوز افزوده شود. رویکرد فوق مدیریت پروژهها، آزمایشهای بتا و نمونهسازیهای سریع را به دلیل وجود بانک کدهای مستقل ساده میکند.
شکل 2
گیت ویژه طراحان
طراحان رابط کاربری و تجربه کاربری یک سازمان ممکن است به دنبال پیادهسازی یک جریان کاربری کاملا جدید یا جایگزینی برخی از آیکونها باشند، ایجاد یک انشعاب جدید یک محیط جعبه شن در اختیار آنها قرار میدهد. آنها میتوانند طرح یا تغییرات خود را بدون آنکه در محصول واقعی اعمال کنند در این محیط آزمایشی اعمال کرده و خروجی نهایی را بررسی کنند که چگونه به نظر میرسد. محدود کردن تغییرات در یک محیط محصور و کنترل شده اجازه میدهد سایر ذینفعان به راحتی طرحها را مشاهده کنند. بهطور مثال، اگر مدیر مهندسی در نظر داشته باشد طرح در دست کار را مشاهده کند، تنها کاری که باید انجام دهد مراجعه به انشعاب ساخته شده است. درج و ادغام انشعابها در محصول نهایی به همان اندازه دور ریختن نمونههای اولیه ساده است، زیرا همه چیز به شکل منظم و ساختیافته طراحی شدهاند تا طراحان رابط کاربری اطمینان حاصل کنند، بهترین محصول در اختیار مشتریان قرار میگیرد.
گیت را چگونه نصب کنیم؟
گیت روی سیستمعاملهای مختلف به روشهای مختلفی نصب میشود. در ادامه با روش نصب گیت روی سیستمعاملهای مک، ویندوز و برخی از توزیعهای پر کاربرد لینوکس آشنا شویم.
نصب گیت در سیستمعامل Mac OS
روشهای مختلفی برای نصب گیت روی مک وجود دارد. اگر Xcode از قبل نصب شده، ممکن است گیت به شکل پیشفرض روی سیستم نصب شده باشد. برای اطمینان از این موضوع، ترمینال را باز و دستور –version را درون آن تایپ کنید.$ git --version
git version 2.7.0 (Apple Git-66)در حالت کلی نسخهای از گیت که توسط اپل استفاده میشود، عقبتر از نسخه اصلی گیت است. اگر تمایل دارید نسخه جدیدتری از گیت را استفاده کنید مراحل زیر را دنبال کنید:
نصب کننده مستقل گیت
سادهترین راه برای نصب یا بهروزرسانی گیت روی سیستمعامل مک، بهکارگیری نصبکننده مستقل است. برای این منظور مراحل زیر را دنبال کنید:
1. ابتدا به آدرس https://sourceforge.net/projects/git-osx-installer/files/ رفته و جدیدترین نسخه گیت برای مک را دانلود کنید و اجرا کنید.
2. پنجره ترمینال را باز و اطمینان حاصل کنید گیت بهدرستی نصب شده باشد. برای این منظور از فرمان زیر استفاده کنید.$ git --version
git version 2.9.23. نام کاربری گیت و آدرس ایمیل را مطابق با دستورات زیر پیکربندی کنید. دقت کنید در دستورات زیر Emma با نام خودتان و آدرس ایمیل eparis@atlassian.com باید با آدرس ایمیل خودتان جایگزین شود. جزییات فوق باید در ارتباط با هر کامیتی که فرد انجام میدهد پیکربندی شود.
$ git config --global user.name “Emma Paris”
$ git config --global user.email “eparis@atlassian.com”
نصب گیت با Homebrew
اگر توسعهدهندهای برای مدیریت بستههای خود در سیستمعامل مک Homebrew را نصب کرده باشد، برای نصب گیت باید مراحل زیر را دنبال کند:
1. پنجره ترمینال را باز و گیت را با استفاده از Homerew نصب کنید.$ brew install git
2. برای اطمینان از این موضوع که نصب به شکل درستی انجام شده فرمان زیر را اجرا کنید:
$ git --version
git version 2.9.23. نام کاربری و ایمیل گیت با استفاده از دستورات زیر پیکربندی میشود. همانند آنچه که اشاره شد، نام کاربری و آدرس ایمیل را باید تغییر دهید:
$ git config --global user.name “Emma Paris” $ git config --global user.email “eparis@atlassian.com”
نصب گیت با MacPorts
اگر توسعهدهندهای MacPorts را برای مدیریت بستهها روی سیستمعامل مک نصب کرده باشد، برای نصب گیت باید مراحل زیر را دنبال کند:
1. ابتدا پنجره ترمینال را باز و MacPorts را با دستور زیر بهروزرسانی کنید:$ sudo port selfupdate
2. اکنون باید از دستورات زیر برای جستوجوی جدیدترین پورتها و Variantsهای گیت استفاده کنید:
$ port search git
$ port variants git3. در این مرحله میتوان گیت را همراه با bash copletion، OS X keychain helper و docs نصب کرد.
$ sudo port install git +bash_completion+credential_osxkeychain+doc
4. نام کاربری و ایمیل گیت را مطابق با دستورات زیر پیکربندی کنید. نام کاربری و ایمیل خود را به جای مقادیر زیر وارد کنید:
$ git config --global user.name “Emma Paris”
$ git config --global user.email “eparis@atlassian.com”
یک مرحله اختیاری
در تمامی مراحل یاد شده یک مرحله اختیاری وجود دارد. برای اینکه گیت نام کاربری و گذرواژه را در زمان کار با مخازن HTTPS به یاد آورد، باید git-credential-osxkeychain helper را پیکربندی کرد. ابزار Bitbucket از ارسال و دریافت مخازن گیت کاربر از طریق SSH و HTTPS پشتیبانی میکند. برای کار با یک مخزن خصوصی بر مبنای HTTPS، کاربر باید نام کاربری و گذرواژه را هر زمان درخواستی را ارسال یا دریافت میکند وارد کند. git-credential-osxkeychain helper به کاربر اجازه ثبت نام کاربری و گذرواژه در OSX keychain را تنها یکبار انجام دهد تا نیازی به تایپ مجدد آنها نداشته باشد. پیکربندی git-credential-osxkeychain helper به شرح زیر است:
اگر از فرآیند نصب MacPorts یا Homebrew استفاده نکردهاید برای نصب helper ابتدا باید آنرا دانلود و نصب کنید. برای دانلود git-credential-osxkeychain باید از curl استفاده کرده و فایل دانلود شده را به مسیر /usr/local/bin انتقال داد.$ curl -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkey...
$ sudo mv git-credential-osxkeychain /usr/local/bin/در این مرحله باید فایل را اجرایی کنید تا سیستمعامل بتواند آنرا اجرا کند.
$ chmod u+x /usr/local/bin/git-credential-osxkeychain
در مرحله بعد باید گیت را برای استفاده از helper با دستور زیر پیکربندی کنید:
$ git config --global credential.helper osxkeychain
ساخت گیت از کد منبع در Mac OS
ساخت گیت در مک به دلیل اینکه کتابخانهها در نسخههای مختلف مک تغییر میکنند با ظرافت خاصی همراه است. در مک نگارش 10 یا 11 میتوان از دستور زیر برای ساخت گیت استفاده کرد:
1. ابتدا ترمینال را باز کرده و ابزار خط فرمان Xcode را نصب کنید.$ xcode-select --install
2. در این مرحله باید Homebrew را نصب کنید و از طریق آن openssl را نصب کنید.
$ brew install openssl
3. اکنون مخزن گیت کپی میشود.
git clone https://github.com/git/git.git
4. برای ساخت گیت باید Make را همراه با فلگهای آن مطابق با دستور زیر اجرا کرد:
$ NO_GETTEXT=1 make CFLAGS=”-I/usr/local/opt/openssl/include” LDFLAGS=”-L/usr/local/opt/openssl/lib”
نصب گیت روی ویندوز
برای نصب گیت روی ویندوز مراحل زیر را دنبال کنید:
1. ابتدا آخرین نسخه نصبکننده گیت ویژه ویندوز را از نشانی
https://git-for-windows.github.io/ دانلود کنید.
2. زمانی که نصبکننده را دانلود و اجرا کردید باید صفحه Git Setup را مشاهده کنید. اکنون پیامهای Next و Finish را دنبال کنید تا نصب کامل شود. نیازی به تغییر گزینههای پیشفرض نیست.
3. ابزار خط فرمان را باز کنید. اگر در زمان نصب گزینه خط فرمان ویندوز انتخاب نشده باشد باید از Git Bash استفاده کرد.
4. نام کاربری و ایمیل گیت را مطابق با اطلاعات هویتی خود ویرایش کنید.
5. همانند سیستمعامل مک، برای راحتی کار بهتر است ابزار
Git credential helper on Windows را نصب کنید.
نصب گیت روی لینوکس
گیت روی توزیعهای لینوکس به روشهای مختلفی نصب میشود. در ادامه با نصب گیت روی توزیع فدورا و اوبونتو آشنا میشویم. بستههای گیت از طریق apt در دسترس هستند.
1. برای نصب گیت در شل فرمان apt-get را اجرا کنید.$ sudo apt-get update
$ sudo apt-get install git2. برای بررسی این موضوع که گیت به درستی کار میکند فرمان زیر را اجرا کنید.
$ git --version
git version 2.9.23. نام کاربری و ایمیل خود را به عنوان اطلاعات هویتی برای گیت وارد کنید. به عبارت دقیقتر، در دستورات زیر باید اطلاعات هویتی خود را وارد کنید:
$ git config --global user.name “Emma Paris”
$ git config --global user.email “eparis@atlassian.com”نصب گیت در فدورا
در توزیع فدورا، بستههای گیت در yum و dnf در دسترس هستند.
1. شل را باز کرده و از دستور dnf برای نصب گیت استفاده کنید. در نسخههای قدیمیتر باید از yum استفاده کنید.$ sudo dnf install git
یا
$ sudo yum install git2. برای اطمینان از این موضوع که گیت به درستی نصب شده، فرمان git –version را اجرا کنید. اگر نصب به شکل موفقیتآمیزی انجام شده باشد، نسخه گیت نصب شده را مشاهده میکنید.
$ git --version
git version 2.9.23. همانند حالت قبل باید نام کاربری و گذرواژه گیت خود را وارد کنید.
ساخت گیت از منبعی در لینوکس
ساخت گیت از روی کد منبع در توزیع فدورا به شرح زیر است:
ابتدا باید وابستگیهای لازم برای ساخت در لینوکس را آماده کرده باشید. وابستگیها از طریق yum و dnf در دسترس برنامهنویسان قرار دارد.
1. شل را باز کرده و فرمان زیر را برای نصب وابستگیها اجرا کنید:$ sudo dnf install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel asciidoc xmlto docbook2X
توسعهدهندگان قدیمی میتوانند همین کار را با yum انجام دهند، با این تفاوت که ابتدا باید مخزن EPEL نصب شود.
$ sudo yum install epel-release
$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel asciidoc xmlto docbook2Xاکنون باید Symbolic Link از docbook2x به نام فایلی که بیلد گیت در انتظار آن است مرتبط شود.
$ sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
در این مرحله میتوانید منبع گیت را با استفاده از دستور زیر کپی کنید.
$ git clone https://git.kernel.org/pub/scm/git/git.git
برای ساخت گیت و نصب آن در /usr دستور make را به شرح زیر اجرا کنید
$ make all doc prefix=/usr
$ sudo make install install-doc install-html install-man prefix=/usr