آموزش گیت branch
این سند یک بررسی عمیق از دستور git branch و بحثی در مورد مدل کلی شاخه Git است. Branching یکی از ویژگی های موجود در اکثر سیستم های کنترل نسخه مدرن است. گیت branch در سایر VCS ها می تواند عملیات گران قیمتی هم در زمان و هم در فضای دیسک باشد. در Git، شاخه ها بخشی از روند توسعه روزمره شما هستند. شاخه های Git به طور موثر نشانگر یک تصویر فوری از تغییرات شما هستند. هنگامی که می خواهید یک ویژگی جدید اضافه کنید یا یک باگ را برطرف کنید (مهم نیست چقدر بزرگ یا کوچک) یک شاخه جدید ایجاد می کنید تا تغییرات خود را محصور کرده و نگه دارید. این کار ادغام کدهای ناپایدار در پایه کد اصلی را دشوارتر می کند و به شما این فرصت را می دهد که تاریخچه آینده خود را قبل از ادغام آن در شاخه اصلی پاک کنید.
نمودار بالا یک مخزن را با دو خط توسعه مجزا، یکی برای یک ویژگی کوچک و دیگری برای یک ویژگی طولانی تر به تصویر میکشد. با توسعه آنها در شاخه ها، نه تنها می توان روی هر دوی آنها به صورت موازی کار کرد، بلکه شاخه اصلی را از کدهای مشکوک دور نگه می دارد.
پیاده سازی پشت شاخه های Git بسیار سبک تر از سایر مدل های سیستم کنترل نسخه است. به جای کپی کردن فایل ها از دایرکتوری به دایرکتوری، Git یک شاخه را به عنوان مرجع یک commit ذخیره می کند. از این نظر، یک شاخه نشان دهنده نوک یک سری از commit ها است. این یک ظرف برای commit ها نیست. تاریخچه یک شاخه از طریق روابط commit برون یابی می شود.
همانطور که خواندید، به یاد داشته باشید که branch های Git مانند شاخه های SVN نیستند. در حالی که شاخه های SVN فقط برای به تصویر کشیدن تلاش های توسعه در مقیاس بزرگ مورد استفاده قرار می گیرند، شاخه های Git بخشی جدایی ناپذیر از گردش کار روزمره شما هستند. اگر تسلط کافی به گیت و گیت هاب ندارید، توصیه میکنیم که اموزش git را در آکادمی رسولی مشاهده کنید.
گیت branch چگونه کار می کند؟
git branch نشان دهنده یک خط مستقل توسعه است. شاخه ها به عنوان یک انتزاع برای فرآیند edit/stage/commit عمل می کنند. می توانید آنها را به عنوان راهی برای درخواست یک فهرست کاری جدید، منطقه صحنه سازی و سابقه پروژه در نظر بگیرید. commit های جدید در تاریخچه برای شاخه فعلی ثبت خواهند شد، که منجر به یک فورک در تاریخچه پروژه می شود.
دستور git branch به شما امکان می دهد شاخه ها را ایجاد، فهرست، تغییر نام و حذف کنید. به شما اجازه نمیدهد بین شاخهها جابجا شوید یا یک تاریخچه فورک شده را دوباره کنار هم قرار دهید. به همین دلیل، شاخه git به شدت با دستورات مهم گیت git checkout و git merge یکپارچه شده است.
گزینه های رایج شاخه گیت
git branch
تمام شاخه های موجود در مخزن خود را فهرست کنید. این مترادف git branch –list است.
git branch
یک branch جدید به نام <branch> ایجاد کنید. این شعبه جدید را بررسی نمی کند.
git branch -d
شاخه مشخص شده را حذف کنید. این یک عملیات “ایمن” است زیرا Git از حذف شاخه در صورتی که تغییرات ادغام نشده داشته باشد، جلوگیری می کند.
git branch -D
حذف اجباری شاخه مشخص شده، حتی اگر تغییرات ادغام نشده باشد. اگر میخواهید تمام تعهدات مرتبط با یک خط توسعه خاص را برای همیشه دور بریزید، این دستوری است که باید از آن استفاده کنید.
git branch -m
شاخه فعلی را به <branch> تغییر نام دهید.
git branch -a
لیست تمام شاخه های راه دور
آموزش ساخت گیت branch
درک این نکته مهم است که شاخهها فقط اشاره گر به commit ها هستند. هنگامی که یک شاخه ایجاد می کنید، تنها کاری که Git باید انجام دهد این است که یک اشاره گر جدید ایجاد کند، این مخزن را به روش دیگری تغییر نمی دهد. اگر با یک مخزن به شکل زیر شروع کنید:
سپس با استفاده از دستور زیر یک شاخه ایجاد می کنید:
git branch crazy-experiment
تاریخچه مخزن بدون تغییر باقی می ماند. تنها چیزی که دریافت می کنید یک اشاره گر جدید به commit فعلی است:
توجه داشته باشید که این فقط شاخه جدید را ایجاد می کند. برای شروع اضافه کردن commit به آن، باید شاخه را با git checkout انتخاب کنید و سپس از دستورات استاندارد git add و git commit استفاده کنید.
ساخت remote branches
تا کنون این نمونه ها همه عملیات branch محلی را نشان داده اند. دستور git branch روی شاخه های راه دور نیز کار می کند. برای کار بر روی شاخه های راه دور، ابتدا باید یک مخزن ریموت پیکربندی شده و به پیکربندی مخزن محلی اضافه شود.
$ git remote add new-remote-repo https://bitbucket.com/user/repo.git
# Add remote repo to local repo config
$ git push crazy-experiment~
# pushes the crazy-experiment branch to new-remote-repo
این دستور یک کپی از crazy-experiment شعبه محلی را به مخزن ریموت <remote> push می کند.
حذف شاخه branch
پس از اتمام کار بر روی یک شاخه و ادغام آن در پایه کد اصلی، می توانید بدون از دست دادن تاریخچه، شعبه را حذف کنید:
git branch -d crazy-experiment
با این حال، اگر شاخه ادغام نشده باشد، دستور بالا یک پیام خطا را خروجی می دهد:
error: The branch ‘crazy-experiment’ is not fully merged. If you are sure you want to delete it, run ‘git branch -D crazy-experiment’.
این ارور، از از دست دادن دسترسی به کل خط توسعه محافظت می کند. اگر واقعاً میخواهید branch را حذف کنید (به عنوان مثال، این یک آزمایش ناموفق است)، میتوانید از فلگ -D استفاده کنید:
git branch -D crazy-experiment
این کار شاخه را بدون توجه به وضعیت آن و بدون اخطار حذف میکند. بنابراین با احتیاط از آن استفاده کنید. دستورات قبلی یک کپی محلی از یک شعبه را حذف می کند. ممکن است شعبه همچنان در مخازن ریموت، وجود داشته باشد. برای حذف یک شاخه از راه دور موارد زیر را اجرا کنید.
git push origin –delete crazy-experiment
یا
git push origin :crazy-experiment
این یک سیگنال حذف را به مخزن اصلی از راه دور منتقل می کند که باعث حذف شاخه crazy-experiment از راه دور می شود. در صورتی که با ساخت مخزن در گیت هاب آشنایی ندارید، می توانید این مقاله از سایت سرو را مطالعه کنید.
سوالات متداول
چه زمانی باید از Branches در Git استفاده کرد؟
شاخههای Git معمولاً زمانی استفاده میشوند که یک ویژگی جدید، رفع اشکال یا هر چیز دیگری در کد شما وجود دارد که ممکن است بخواهید آن را ردیابی کنید و با نسخههای قبلی مقایسه کنید. این قابلیت به شناسایی و ردیابی مواردی که با رفع اشکال یا انتشار ویژگی جدید مشکلی پیش میآید، کمک میکند.
چگونه یک Repository را تبدیل به Branch کنیم؟
برای Branch یک Repository به صورت محلی، باید نسخه ای از مخزن را شبیه سازی کرده باشید. سپس، در یک پنجره ترمینال، شاخه ها را فهرست کرده و یک شاخه ویژگی جدید ایجاد کنید. به این شاخه ویژگی بروید، روی آن کار کنید و قبل از بازگشت به مخزن اصلی خود، تغییرات را در آن انجام دهید.
درباره مدیریت
من عاشق برنامه نویسی و تکنولوژی هستم و 10 سال در این زمینه مشغول به فعالیت هستم و پروژه های مختلفی رو در زمینه های سایت و شبکه های کامپیوتری و امنیت اطلاعات انجام دادم و در حال حاضر مدیر و موسس شرکت انفورماتیک طراحی پایا آنوش هستم که در زمینه ی طراحی سایت و سیستم های هوشمند و برقراری امنیت اطلاعات سیستم های کامپیوتری و همچنین آموزش فعالیت دارد و میخواهم هر آنچه که در طی این 10 سال یاد گرفتم و تجربه کردم رو با شما به اشتراک بگذارم.
نوشته های بیشتر از مدیریت
دیدگاهتان را بنویسید