آموزش گیت – قسمت اول

نویسنده : سید ایوب کوکبی ۱۴ اردیبهشت ۱۳۹۸
آموزش گیت - قسمت اول

گیت (git) دنیای بزرگی است و تسلط به تمام مباحث آن دشوار است ولی بهره‌برداری از آن برای کارهای معمول بیشتر از آنچه فکر می‌کنید آسان است. سعی داریم در یک آموزش چند قسمتی، گیت را آنطور که باید بفهمید به شما آموزش دهیم. هستۀ اصلی آموزش از کتاب Ry’s Git Tutorial نوشتۀ آقای رایان هادسان گرفته شده ولی هر جایی لازم بوده توضیحات بیشتری داده‌ایم. همراه ما باشید با قسمت اول آموزش گیت.

مقدمه

گیت یک سیستم کنترل نسخه (VCS: Version Control System) است و تنها یک کار انجام می‌دهد: مدیریت تغییرات فایل‌ها. خالقش همان فردی است که کرنل لینوکس را نوشته یعنی لینوس توروالدز. این ابزار به شما اجازه می‌دهد تا هر تغییری در هر فایلی از پروژه را ردیابی کنید طوری که بفهمید چه تغییراتی، چرا، کی و توسط چه کسی روی چه فایلی اعمال شده است.

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

تاریخچۀ سیستم‌های کنترل نسخه

دربارۀ فلسفۀ گیت به زودی صحبت خواهیم کرد ولی قبل از آن بیایید نگاهی عمومی داشته باشیم به تاریخچۀ تکامل سیستم‌های کنترل نسخه.

فایل‌ها و فولدرها

قبل از اختراع سیستم‌های کنترل نسخه، تنها چیزی که وجود داشت همین فایل‌ها و فولدرها بود. تنها راه مدیریت نسخه‌های مختلف پروژه، کپی کل پروژه در یک فولدر جدید بود. احتمالاً همین الان هم کلی پروژه دارید که به صورت فولدر یا فشرده (پسوند rar و zip) در نسخه‌های مختلفی نگه‌داری کرده‌اید. نام‌گذاری‌ها هم که الی‌ماشاالله: final، last final, complete, last version, final final و … . این ساده‌ترین شکل یک سیستم کنترل نسخه بود که هنوز هم استفاده می‌شود.

نمایی از یک سیستم کنترل نسخۀ فایل و فولدری

احتمالاً مشکل چنین سیستمی را به خوبی درک می‌کنید. اصلاً می‌دانید داخل هر کدام از نسخه‌های بکاپ چه خبر است؟ هر یک چه فرقی با بقیه دارد؟ اگر یک فایل را فراموش کردید بکاپ بگیرید، چه می‌شود؟ نام‌گذاری درستی انتخاب نکردید و هزاران مشکل دیگر که هنگام بروز آن‌ها با جان و دل منسوخ بودن و ناکارآمدی این روش را درک خواهید کرد.

بخوانید  آموزش گیت - قسمت هفتم

سیستم‌های کنترل نسخۀ محلی

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

ساختار یک سیستم کنترل نسخۀ محلی (local VCS)

ولی مشکل اساسی این روش این بود که فقط روی کامپیوتر هر شخص کار می‌کرد و امکان اشتراک کدها با سایر برنامه‌نویس‌ها نبود یعنی عملاً در پروژه‌های تیمی این سیستم کارایی نداشت.

سیستم‌های کنترل نسخۀ متمرکز

مشکلات روش قبلی باعث شد تا زمینه برای معرفی سیستم‌های کنترل نسخۀ متمرکز (CVSC: Centralized Version Control System) فراهم شود. به جای ذخیرۀ تاریخچۀ پروژه‌ها در هارد توسعه‌دهنده‌ها، پایگاه داده روی یک سرور ذخیره می‌شد. توسعه‌دهندگان هر زمانی که می‌خواستند پروژه را از سرور دریافت و بعد از انجام کار مجدداً روی سرور ذخیره می‌کردند. این روش به چندین برنامه‌نویس مختلف اجازه می‌داد روی یک پروژه همکاری کنند.

ساختار یک سیستم کنترل نسخۀ متمرکز CVCS

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

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

بخوانید  آموزش گیت - قسمت چهارم

سیستم‌های کنترل نسخۀ توزیع شده

تقریباً تمام مشکلاتی که سیستم‌های کنترل نسخۀ متمرکز داشتند در نسخۀ توزیع شده (DVCS: Destributed Version Control System) که نسل جدید سیستم‌های کنترل نسخه تا به امروز است رفع شد. در این روش یک سیستم مرکزی وجود ندارد، هر توسعه‌دهنده‌ای می‌تواند نسخه‌ای از پروژه را در سیستم خود ذخیره کند و هر زمان خواست آن را با کدهای اصلی ترکیب کند. اینجا هم تداخل به وجود می‌آید ولی حل آن بسیار کارآمدتر از سیستم‌های متمرکز است.

سیستم کنترل نسخه توزیع شده مثل گیت
ساختار یک سیستم کنترل نسخۀ توزیع شده

در سیستم توزیع شده دیگر یک سرور مرکزی وجود ندارد. هر کسی می‌تواند روی نسخۀ لوکال خود کار کند و هر زمان خواست تغییرات را به سرور منتقل کند. بعلاوه در DVCS تمرکز زیادی روی مدیریت کارآمد شاخه‌هاست. برنامه‌نویسان هر کدام در شاخۀ مجزای خود کدها را بروزرسانی می‌کنند. این کار، ادغام، حل تداخل‌ و اشتراک کد را بسیار آسان می‌کند.

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

تولد گیت

در سال ۲۰۰۵، BitKeeper که جامعۀ لینوکس برای مدیریت کدها از ۲۰۰۲ تا آن زمان از آن استفاده می‌کرد لایسنس رایگان خود را برداشت. این یعنی باید هزینۀ استفاده از بیت‌کیپر پرداخت می‌شد. لینوس توروالدز در پاسخ به این حرکت، یک سیستم کنترل نسخۀ توزیع شده نوشت و به صورت متن‌باز منتشر کرد تا به جای بیت کیپر استفاده شود. اینجا بود که گیت متولد شد.

بخوانید  minSdkVersion | compileSdkVersion | targetSdkVersion

گیت ویژگی‌های منحصر به فردی داشت:

  • قابلیت اطمینان بالا
  • مدیریت کارآمد فایل‌ها در پروژه‌های بزرگ
  • پشتیبانی از توسعه پروژه به صورت توزیع شده
  • پشتیبانی از توسعۀ غیر خطی

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

نصب گیت

قبل از هر چیزی باید git را نصب کنید که مسلماً ابتدا باید دانلود کنید. برای کاربران ویندوز، یک ابزار خط فرمانی تحت عنوان Git Bash نصب می‌شود. از cmd هم می‌توانید استفاده کنید ولی توصیه می‌کنیم از همین shell استفاده کنید. کاربران مک و لینوکس نیز می‌توانند از شل سیستم به دستورات گیت دسترسی داشته باشند. برای تست نصب بودن گیت، پنجرۀ cmd را باز کنید و دستور git –version را بزنید. اگر نسخۀ برنامه را نشان داد یعنی همه چیز درست نصب شده است.

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

منتظر قسمت بعدی باشید.

سید ایوب کوکبی

نویسنده و مترجم...

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *