دانلود ویدیو

 

Git یک سیستم کنترل نسخه توزیع شده متن باز است که عبارات زیادی برای تعریف آن وجود دارد. در زیر این عبارات را توضیح می‌دهیم: 

سیستم کنترل (Control System): این عبارت بدان معنی است که Git یک ردیاب محتواست. بنابراین، می توان از گیت برای ذخیره‌سازی محتوا استفاده کرد. هر چند که بیشتر به دلیل ویژگی‌های دیگری که دارد، برای ذخیره کد مورد استفاده قرار می‌گیرد. 

سیستم کنترل نسخه (Version Control System): دارای دو ویژگی اصلی است:

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

۲. همچنین، بسیاری از توسعه‌دهندگان می‌توانند به طور همزمان و موازی کدهای خود را اضافه یا تغییر دهند. 

حال سوال اینجاست که چگونه می‌توان متوجه شد که چه کدهایی تغییر یا اضافه شده است؟ این کار بر عهده سیستم کنترل نسخه است. سیستم کنترل  نسخه با حفظ تاریخچه تغییراتی که رخ داده است، در رسیدگی به این موضوعات کمک می‌کند. 

سیستم کنترل نسخه توزیع‌شده (Distributed Version Control System): گیت دارای دو Repository است: یکی Repository ریموت که در سرور ذخیره شده است و دیگری Repository لوکال است که در کامپیوتر هر توسعه‌دهنده‌ای ذخیره می‌شود. 

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

چرا به یک سیستم کنترل نسخه همانند Git نیاز داریم؟

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

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

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

حال بیایید ببینیم چگونه باید از گیت استفاده کنیم؟

در ادامه این مطلب، به جای این که همه مفاهیم را به صورت جداگانه توضیح دهیم، مفاهیم گیت را با یک مثال توضیح می‌دهیم تا درک و فهم آنها آسان‌تر باشد.

دانلود گیت

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

 

git --version

 

Repository لوکال خود را ایجاد کنید

در کامپیوتر خود، یک پوشه برای پروژه‌تان ایجاد کنید. نام پوشه را هر آن‌چه که می‌خواهید بنامید. ما در اینجا نام آن را simple-git-demo نامیدیم. 

حال وارد پوشه پروژه خود شوید و با استفاده از دستورات زیر یک Repository لوکال Git را به پروژه خود اضافه کنید:

 

cd simple-git-demo
git init

 

دستور git init یک Repository لوکال گیت را به پروژه شما اضافه می‌کند. 

اکنون بیایید کد کوتاهی را اضافه کنیم

فایلی با نام demo.txt را در پوشه پروژه خود ایجاد کنید و متن زیر را در آن کپی کنید:

 

Initial Content

 

در اینجا ما به جای کد واقعی، از متن ساده استفاده می‌کنیم؛ زیرا تمرکز اصلی این مقاله بر روی گیت است و نه بر روی زبان برنامه‌نویسی خاصی.

حال نوبت Staging و Committing است

Committing فرآیندی است که در آن کد به Repository لوکال اضافه می‌شود. البته پیش از Committing، کد شما باید در بخش Staging قرار گیرد. بخش Staging، تمامی فایل‌هایی که باید commit شوند، در خود نگه می‌دارد. 

در حقیقت، هر فایلی که به قسمت Staging اضافه نشده باشد، commit نخواهد شد. این کار به توسعه‌دهنده این امکان را می‌دهد که فایل‌هایی را که باید commit شوند، به راحتی کنترل و مدیریت کنند.

Staging

Staging فایل‌ها از دستور زیر امکان‌پذیر است:

 

git add demo.txt

 

در صورتی که می‌خواهید چندین فایل را اضافه کنید، می‌توانید از کد زیر استفاده کنید: 

 

git add file1 file2 file3

 

در این بین، اگر قصد دارید که کلیه فایل‌های موجود در پوشه پروژه‌تان را به بخش Staging اضافه کنید، باید کد زیر را اجرا کنید:

 

git add .

 

Committing

با استفاده از کد زیر، می‌توانید فایل‌های خود را commit کنید:

 

git commit -m "Initial Commit"

 

در اینجا، Initial Commit به عنوان پیام مبنا در نظر گرفته می‌شود. با وارد کردن یک Commit مرتبط می‌توانید از تغییراتی که در آن نسبت به نسخه اولیه ایجاد شده، آگاه شوید. 

Git Status و Git Log

اکنون فایل demo.txt را تغییر داده و قطعه کد زیر را اضافه کنید:

 

Initial Content Adding more Content

 

وضعیت (Status)

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

برای دیدن وضعیت دستور زیر را اجرا کنید:

 

git status

 

با اجرای این کد، status نشان می‌دهد که فایل demo.txt اصلاح شده است اما هنوز به بخش Staging اضافه نشده است. 

پس بیایید این فایل را به قسمت Staging اضافه کنیم و با استفاده از دستور زیر آن را commit کنیم:

 

git add demo.txt git commit -m "demo.txt file is modified"

 

Log

از git log برای چاپ تمامی commit هایی که تاکنون انجام شده‌اند، استفاده کنید. 

دستوری که برای این کار استفاده می‌شود، به صورت زیر است: 

 

git log

 

Log نویسنده هر commit، تاریخ آن و پیام commit را نمایش می‌دهد.

شاخه‌ها (Branches)

تاکنون هیچ Branch در گیت ایجاد نکردیم. به طور پیش‌فرض، commitها به شاخه master می‌روند.

شاخه چیست؟

یک شاخه چیزی نیست جز نشان‌گر آخرین commit‌ای که در Repository گیت وجود دارد. بنابراین، در حال حاضر شاخه مرکزی ما به دومین commit اشاره دارد. 

چرا به چندین شاخه نیاز داریم؟

شاخه‌ها برای پشتیانی از توسعه‌های هم‌زمان و موازی مورد نیاز است.

ایجاد یک شاخه جدید در Local

با اجرای دستور زیر، یک شاخه جدید با تام test ایجاد کنید:

 

git branch test

 

این دستور شاخه test را ایجاد می‌کند. 

در حال حاضر، ما در شاخه مرکزی هستیم. به منظور جابجایی به شاخه test باید دستور زیر را اجرا کنیم:

 

git checkout test

 

هم‌اکنون ما در شاخه test هستیم. 

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

 

git branch

 

برخی از commit‌ها را در شاخه جدید انجام دهید

فایل demo.txt را با قطعه کد زیر اصلاح کنید:

 

Initial Content Adding more Content Adding some Content from test Branch

 

حال عملیات stage و commit را با دستور زیرا انجام دهید:

 

git add demo.txt git commit -m "Test Branch Commit"

 

با اجرای این دستور، این commit در شاخه test انجام شد؛ و اکنون شاخه test با یک commit پیش‌رو از شاخه مرکزی است. چرا که شاخه test شامل ۲ commit از شاخه مرکزی است. 

شما می‌توانید با استفاده از کد زیر، تاریخچه commit ها را در شاخه Test بررسی کنید:

 

git log

 

ادغام

در حال حاضر، شاخه Test با ۱ commit از شاخه مرکزی است. اکنون می‌خواهیم تمامی کدهای موجود در شاخه test را به شاخه مرکزی منتقل کنیم. اینجاست که دستور git merge به کمک ما می‌آید. 

برای ادغام کدهای شاخه test و شاخه مرکزی، این مراحل را دنبال کنید: 

بتدا به شاخه مرکزی برگردید:

 

git checkout master

 

سپس دستور merge را اجرا کنید:

 

git merge test

 

پس از اجرای این دو دستور، ادغام باید موفقیت صورت گیرد. 

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

حال، git log را اجرا کنید. متوجه خواهید شد که شاخه مرکزی دارای ۳ commit است.