Git یک سیستم کنترل نسخه توزیع شده متن باز است که عبارات زیادی برای تعریف آن وجود دارد. در زیر این عبارات را توضیح میدهیم:
سیستم کنترل (Control System): این عبارت بدان معنی است که Git یک ردیاب محتواست. بنابراین، می توان از گیت برای ذخیرهسازی محتوا استفاده کرد. هر چند که بیشتر به دلیل ویژگیهای دیگری که دارد، برای ذخیره کد مورد استفاده قرار میگیرد.
سیستم کنترل نسخه (Version Control System): دارای دو ویژگی اصلی است:
۱. اگر کدی را در Git ذخیره کرده باشید و پس از مدتی قصد تغییر آن را کردید، باید بدانید که این تغییرات بر روی کد قبلی اعمال و سپس ذخیره میشوند.
۲. همچنین، بسیاری از توسعهدهندگان میتوانند به طور همزمان و موازی کدهای خود را اضافه یا تغییر دهند.
حال سوال اینجاست که چگونه میتوان متوجه شد که چه کدهایی تغییر یا اضافه شده است؟ این کار بر عهده سیستم کنترل نسخه است. سیستم کنترل نسخه با حفظ تاریخچه تغییراتی که رخ داده است، در رسیدگی به این موضوعات کمک میکند.
سیستم کنترل نسخه توزیعشده (Distributed Version Control System): گیت دارای دو Repository است: یکی Repository ریموت که در سرور ذخیره شده است و دیگری Repository لوکال است که در کامپیوتر هر توسعهدهندهای ذخیره میشود.
این بدان معنی است که کد فقط در یک سرور مرکزی ذخیره نمیشود. بلکه کپی کاملی از آن در کلیه کامپیوترهای توسعهدهندگان نیز موجود است. به همین خاطر، به گیت سیستم کنترل نسخه توزیعشده میگویند.
به طور معمول، پروژههای واقعی توسط چندین توسعهدهنده و به صورت موازی نوشته میشوند. اگر هیچ سیستم کنترلی در میان نبود، مدیریت این حجم از کدها کاری سخت و طاقتفرسا بود. اما در حال حاضر این کار با Git بسیار آسان شده است. سیستم کنترل نسخه همانند Git، یک اطمینان خاطر از عدم درگیری و تداخل کدهای توسعهدهندگان ایجاد میکند.
علاوهبراین، گاهی پیش میآید که به اشتباه کدهایی که وجودشان لازم و ضروری بود، از بین میروند یا تغییر پیدا میکنند. گیت این امکان را به توسعهدهندگان میدهد که به نسخههای قدیمی کد بازگردند و مشکل به وجود آمده را رفع کنند.
در نهایت، گاهی اوقات پروژههایی به طور موازی در حال اجرا هستند که تمامی آنها با یک Codebase درگیر هستند. در چنین حالتی، مفهوم انشعابات در Git بسیار مهم است.
در ادامه این مطلب، به جای این که همه مفاهیم را به صورت جداگانه توضیح دهیم، مفاهیم گیت را با یک مثال توضیح میدهیم تا درک و فهم آنها آسانتر باشد.
این لینک جزئیاتی در مورد نحوه نصب گیت در چندین سیستم عامل مختلف را بیان کرده است. پس از نصب آن، با استفاده از کد زیر در خط فرمان بررسی کنید که گیت به درستی نصب شده است یا نه:
git --version
در کامپیوتر خود، یک پوشه برای پروژهتان ایجاد کنید. نام پوشه را هر آنچه که میخواهید بنامید. ما در اینجا نام آن را simple-git-demo نامیدیم.
حال وارد پوشه پروژه خود شوید و با استفاده از دستورات زیر یک Repository لوکال Git را به پروژه خود اضافه کنید:
cd simple-git-demo git init
دستور git init یک Repository لوکال گیت را به پروژه شما اضافه میکند.
فایلی با نام demo.txt را در پوشه پروژه خود ایجاد کنید و متن زیر را در آن کپی کنید:
Initial Content
در اینجا ما به جای کد واقعی، از متن ساده استفاده میکنیم؛ زیرا تمرکز اصلی این مقاله بر روی گیت است و نه بر روی زبان برنامهنویسی خاصی.
Committing فرآیندی است که در آن کد به Repository لوکال اضافه میشود. البته پیش از Committing، کد شما باید در بخش Staging قرار گیرد. بخش Staging، تمامی فایلهایی که باید commit شوند، در خود نگه میدارد.
در حقیقت، هر فایلی که به قسمت Staging اضافه نشده باشد، commit نخواهد شد. این کار به توسعهدهنده این امکان را میدهد که فایلهایی را که باید commit شوند، به راحتی کنترل و مدیریت کنند.
Staging فایلها از دستور زیر امکانپذیر است:
git add demo.txt
در صورتی که میخواهید چندین فایل را اضافه کنید، میتوانید از کد زیر استفاده کنید:
git add file1 file2 file3
در این بین، اگر قصد دارید که کلیه فایلهای موجود در پوشه پروژهتان را به بخش Staging اضافه کنید، باید کد زیر را اجرا کنید:
git add .
با استفاده از کد زیر، میتوانید فایلهای خود را commit کنید:
git commit -m "Initial Commit"
در اینجا، Initial Commit به عنوان پیام مبنا در نظر گرفته میشود. با وارد کردن یک Commit مرتبط میتوانید از تغییراتی که در آن نسبت به نسخه اولیه ایجاد شده، آگاه شوید.
اکنون فایل demo.txt را تغییر داده و قطعه کد زیر را اضافه کنید:
Initial Content Adding more Content
از git status استفاده کنید تا اطلاعاتی راجع به اینکه چه فایلهایی اصلاح شدهاند و چه فایلهایی در بخش Staging قرار دارند، به دست آورید.
برای دیدن وضعیت دستور زیر را اجرا کنید:
git status
با اجرای این کد، status نشان میدهد که فایل demo.txt اصلاح شده است اما هنوز به بخش Staging اضافه نشده است.
پس بیایید این فایل را به قسمت Staging اضافه کنیم و با استفاده از دستور زیر آن را commit کنیم:
git add demo.txt git commit -m "demo.txt file is modified"
از git log برای چاپ تمامی commit هایی که تاکنون انجام شدهاند، استفاده کنید.
دستوری که برای این کار استفاده میشود، به صورت زیر است:
git log
Log نویسنده هر commit، تاریخ آن و پیام commit را نمایش میدهد.
تاکنون هیچ Branch در گیت ایجاد نکردیم. به طور پیشفرض، commitها به شاخه master میروند.
یک شاخه چیزی نیست جز نشانگر آخرین commitای که در Repository گیت وجود دارد. بنابراین، در حال حاضر شاخه مرکزی ما به دومین commit اشاره دارد.
شاخهها برای پشتیانی از توسعههای همزمان و موازی مورد نیاز است.
با اجرای دستور زیر، یک شاخه جدید با تام test ایجاد کنید:
git branch test
این دستور شاخه test را ایجاد میکند.
در حال حاضر، ما در شاخه مرکزی هستیم. به منظور جابجایی به شاخه test باید دستور زیر را اجرا کنیم:
git checkout test
هماکنون ما در شاخه test هستیم.
اگر میخواهید لیست کلیه شاخههای Local را مشاهده کنید، باید دستور زیر را دنبال کنید:
git branch
فایل 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 است.
۵۰ درصد تخفیف ویژه پاییز فرانت کست تا پایان هفته
کد تخفیف: atm
دیدگاهها:
داود چهارمحالی
تیر 11, 1400 در 7:53 ب.ظ
خیلی مفید و مختصر
عالی
مسعود صدری
تیر 12, 1400 در 12:04 ق.ظ
خیلی ممنونم.
کیارش
اسفند 29, 1399 در 10:31 ق.ظ
خیلی ممنون از شما بابت مطالب آموزشی خوبتون و همچنین رویکرد قیمت گذاریتون که امکان برای همه ایجاد ممکن تا به آموزش دسترسی داشته باشند .
مسعود صدری
اسفند 29, 1399 در 10:19 ب.ظ
سلام
ممنون از شما.
فروغ
آذر 26, 1399 در 4:34 ب.ظ
مثل همیشه عالی بود. ممنون
مسعود صدری
آذر 26, 1399 در 4:42 ب.ظ
خیلی ممنون.
نرگس
خرداد 11, 1399 در 5:44 ب.ظ
خیلی روان و قابل فهم بود. ممنون از آموزش های خوبتون
مسعود صدری
خرداد 11, 1399 در 5:52 ب.ظ
ممنون از شما.
aminda
دی 5, 1398 در 9:41 ق.ظ
خیلی ممنون جناب صدری