آشنایی گام به گام با گیت (Git) و گیت هاب (github)

آشنایی با git

فرض کنید که در حال کدنویسی یک برنامه، طراحی وب و یا ویرایش فایل‌های متنی مختلف هستید. در این حالت، فایل و یا فایل‌هایی را ایجاد کرده و به طور پیوسته محتوای آن‌ها را افزوده و یا تغییر می‌دهید. با زیاد شدن حجم فایل‌ها و دایرکتوری‌ها، دنبال کردن روند تغییرات، پیچیده خواهد شد. مثلا اگر در حین کدنویسی، باگ پیش‌بینی نشده‌ای، روند توسعه‌ی نرم‌افزار را مختل سازد، بازگشت به مرحله‌ی با ثبات پیش از تغییرات، می‌تواند باعث سردرگمی گردد. کنترل ورژن یا VCS (Vesion Control System) و یا revision control روشی نظام‌مند، در مدیریت ثبت و تغییر فایل‌ها می‌باشد. در کنترل ورژن، می‌توانیم تاریخچه‌ی تغییرات را، در هر مرحله دنبال نماییم. تغییرات معمولا با یک شماره‌ی ورژن، ثبت می‌شوند. قابلیت‌های کنترل ورژن، در فایل‌هایی که با مشارکت گروهی افراد، ویرایش می‌شوند، اهمیت ویژه‌ای پیدا می‌نماید. از نرم‌افزارهای کنترل ورژن، می‌توان به: cvs, svn و git اشاره نمود. در حال حاضر، git، رایج‌ترین کنترل ورژن می‌باشد و آشنایی با این نرم‌افزار، ابزارهای بسیاری را برای مدیریت تغییرات فایل‌ها، برای توسعه‌دهندگان نرم‌افزار فراهم می‌سازد.

git، یک کنترل ورژن توزیع شده می‌باشد، بنابراین، مخزن فایل‌های git را، علاوه بر ذخیره‌سازی محلی و بصورت آفلاین، بر روی سرور شبکه، جهت مشارکت گروهی نیز، می‌توان استفاده نمود. Github، سایتی پرطرفدار، برای بارگذاری پروژه‌های ایجاد شده توسط نرم‌افزار git، بر بستر اینترنت می‌باشد. طبق گزارش گیت‌هاب، در ژانویه‌ی 2020، بیش از 40 میلیون کاربر، دارای افزون بر 190 میلیون repository، یا مخزن، بر روی Github می‌باشند. در ادامه برای آشنایی با git و github با ما همراه باشید.

تاریخچه‌ی git

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

آشنایی خط فرمان در git

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

نصب git

Git در سیستم عامل‌های ویندوز، مک و لینوکس قابل نصب می‌باشد. برای نصب گیت می‌توانید به وب سایت رسمی گیت رفته و با توجه به سیستم عامل مورد نظر، نسبت به نصب git، اقدام نمایید.

نصب بر روی لینوکس

جهت نصب گیت بر روی سیستم عامل لینوکس بسته به توزیع لینوکسی که استفاده می‌کنیم می‌توانیم گیت را از روی مخزن(repository) آن توزیع نصب نماییم. مثلا برای نصب گیت بر روی توزیع دبیان و توزیع‌های مبتنی بر دبیان به روش زیر عمل می‌نماییم:

برای توزیع فدورا و توزیع‌های مبتنی بر ردهت داریم:

نصب بر روی macOS

با استفاده از پکیج منیجر homebrew می‌توانیم نرم‌افزار git را بر روی osx نصب نماییم.

نصب بر روی ویندوز

برای نصب بر روی ویندوز، با مراجعه به سایت رسمی git و دانلود نرم‌افزار نصب بر روی ویندوز می‌توانید نسبت به نصب git اقدام نمایید. بر روی سایت، فایل‌های نصب git، برای ویندوز 32 بیتی و 64 بیتی، موجود می‌باشد.

تنظیمات git

در ابتدا برای تنظیمات اولیه باید نام خود و آدرس ایمیل‌تان را در گیت ثبت نمایید. با این کار تغییراتی که در فایل‌های پروژه انجام می‌دهید به نام شما ثبت خواهد گردید.

برای مشاهده‌ی تنظیمات انجام شده در گیت از دستور زیر استفاده نمایید:

مخزن یا Repository

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

شروع یک پروژه

برای شروع، در ابتدا یک فولدر در مسیر مورد نظر ایجاد می‌نماییم. سپس مسیر دایرکتوری جاری را به مسیر دایرکتوری فولدر پروژه‌ی مورد نظر، تغییر داده و دستور git init را اجرا می‌نماییم، یا این که مسیر فولدر پروژه را، جلوی دستور قید نموده و <مسیر فولدر پروژه> git init اجرا نمایید. با اجرای این دستور، گیت، یک فولدر به نام git. ایجاد نموده و آماده‌ی ثبت تغییرات و تاریخچه‌ی تغییرات فایل‌های مورد نظر می‌گردد. حالا دیگر، پروژه‌ی مورد نظر شما، تبدیل به یک مخزن گیت محلی گردیده است. پوشه‌ی git. یک پوشه‌ی مخفی در دایرکتوری مورد نظر است که توسط git ساخته می‌شود. لازم به ذکر است، در صورتیکه چندین فولدر جداگانه برای پروژه‌های مختلف داشته باشیم، در هر فولدر پروژه، لازم است دستور git init به طور جداگانه اجرا شده و یک فولدر git. جداگانه ایجاد می‌شود. در زیر اجرای مراحل ذکر شده را مشاهده می‌نمایید:

ایجاد فایل و اضافه کردن آن به repository

در این مرحله به عنوان مثال سه فایل به نام‌های file3. file2, file1 را با فرمان touch اجرا می‌نماییم. دستور touch، فایل‌های خالی و با ظرفیت صفر ایجاد می‌کند. برای اینکه git تغییرات هر فایلی را دنبال نماید، باید آن را، در محیط staging قرار دهیم. بنابراین، با دستور git add فایل‌های مورد نظر را، در محیط staging قرار می‌دهیم. سپس وقتی که تغییرات فایل‌ها، به نقطه‌ی مطلوب مورد نظر ما رسیدند، می‌توانیم با commit کردن سوابق تغییرات با عنوان یک ورژن یا نسخه‌ی جدید، در repository ذخیره نماییم. توجه داشته باشید که آپشن A- تما فایل‌های موجود در دایرکتوری جاری را در مرحله‌ی stage قرار می‌دهد. با اجرای دستور git status می‌توانیم از وضعیت فایل‌های موجود در stage ، گزارشی داشته باشیم.

پس از اضافه کردن فایل‌ها به محیط stage، هر تغییری که در فایل‌ها اعمال شود، این تغییرات، توسط git، دنبال خواهد شد. مثلا ما در فایل file1 یک خط اضافه کردیم. حال با اجرای دستور git status می‌توانید فایل‌های تغییر یافته را مشاهد نمایید.

آشنایی با ثبت تغییرات در git

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

نمایش تغییرات

برای مشاهده‌ی تغییرات صورت گرفته پس از ثبت آخرین تغییرات یا تغییرات کامیت نشده، می‌توان از دستور git diff استفاده نمود:

گزارش از وضعیت commitها با log

برای اطلاع از مستندات و تاریخچه‌ی تغییرات انجام شده از دستور git log استفاده می‌کنیم:

ایجاد شاخه یا branch

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

merge

در صورتی که بخواهیم شاخه‌ی ایجاد شده را با شاخه‌ی اصلی یکی نماییم، از دستور merge استفاده می‌گردد:

ریموت در git

در پروژه‌هایی که، با مشارکت گروهی افراد انجام می‌شود، معمولا مخزن git را بر روی سرور یک شبکه قرار می‌دهند. با این روش، تغییراتی که در مخزن اعمال می‌شود، در دسترس همه‌ی افراد پروژه قرار دارد. این سرور می‌تواند توسط خودتان راه‌اندازی شده باشد. همچنین می‌توان از سرورهایی بر روی اینترنت از قبیل: sourceforge ,gitlab ,bitbucket و github به همین منظور استفاده نمود.

Github

تا این قسمت آشنایی با git، مخزن ساخته شده از نوع محلی(Local) است. در صورتی که بخواهیم از مخزنی بر روی شبکه استفاده نماییم، از remote برای ارتباط با سروری که مخزن پروژه بر روی آن قرار دارد، استفاده می‌کنیم. برای مشاهده‌ی مخزن‌های ریموت از دستور git remote استفاده می‌شود:

همان‌طور که مشاهده می‌شود، هنوز مخزن ریموتی برای این پرو‌ژه ثبت نگردیده است. برای اضافه کردن یک مخزن ریموت به گیت، از دستور git remote add استفاده می‌نماییم. در جلوی دستور، نام ریموت و آدرس url مخزن را، می‌آوریم. مثلا برای اضافه کردن مخزنی در github، به روش زیر عمل نمایید. لازم به ذکر است که، در ابتدا، باید مخزن مورد نظر را در github، از طریق اکانتی که در سایت گیت‌هاب در اختیار دارید، ایجاد کرده باشید.

push

برای ارسال تغییرات commit شده، در مخزن local به مخزن ریموت از git push استفاده می‌شود:

pull

برای دریافت تغییرات اعمال شده در مخزن ریموت، و بروزرسانی مخزن محلی، از git pull استفاده می‌شود:

بازگردانی تغییرات

در صورتی که بخواهیم یک فایل را به آخرین وضعیت commit شده برگردانیم و تغییرات اعمال شده را نادیده بگیریم از دستور زیر استفاده می‌کنیم:

دیدگاهتان را بنویسید