گیت یکی از پرکاربردترین سیستمهای کنترل نسخه است و ابزار مهمی برای هر توسعه دهنده به حساب میآید. یکی از بزرگترین مزایای آن قابلیت branching (شاخهبندی) است. شاخه گیت یک جنبه اساسی در روند کار کنترل نسخه شماست. در این مقاله در مورد چگونگی ایجاد، حذف، ادغام و تجدید شاخههای گیت بحث خواهیم کرد. پس از آن گامهای بعدی را که میتوانید برای پیشرفت دانش گیت خود بردارید، شرح خواهیم داد.
شاخهبندی چیست؟
تصور کنید که با تیم خود روی پروژهای کار میکنید و ویژگی جدیدی ایجاد کردهاید که نیاز به تغییرات زیادی در کد دارد. در این روند شما یک باگ را پیدا میکنید که باید برطرف شود. این باگ مربوط به ویژگی جدید است و نمیخواهید روی کد خود تأثیر بگذارید. این وضعیت میتواند پیچیده شود. کدی که روی آن کار کردهاید را از کجا ذخیره خواهید کرد؟
این همان شاخههای گیت است. branching مفهوم اصلی کنترل منبع است که به شما امکان میدهد کار خود را به شاخههای مختلف تفکیک کرده تا بتوانید آزادانه بر روی کد منبع خود کار کنید بدون اینکه بر کار دیگران یا کد واقعی شاخه اصلی تأثیر بگذارد.
ابتدا با یک شاخه اصلی به نام main شروع میکنید. گیت به شما امکان میدهد هر تعداد شاخه مورد نظر خود را ایجاد کنید.
توجه: همیشه لازم نیست انشعابهایی از شاخه اصلی ایجاد کنید. بلکه میتوانید از هر شاخه دیگری انشعاب جدید بگیرید.
در شاخههای جداگانه خود میتوانید بدون تأثیر مستقیم بر کد منبع، آن را تست کنید. این به شما و تیمتان اجازه میدهد بدون نگرانی در مورد تأثیر شاخههای مختلف، بین کانتکستها جابهجا شوید. این یک ابزار عالی برای تیمها است، زیرا همکاری را آسانتر و انعطاف پذیر میکند.
توجه: شاخههای گیت با شاخههای SVN متفاوت است. شاخههای Git در گردش کار روزمره شما مفید هستند، در حالی که شاخههای SVN در کارهای توسعه در مقیاس بزرگ استفاده میشوند.
ایجاد شاخه
یک شاخه محلی فقط در دستگاه فیزیکی شما قابل دسترسی است. قبل از اینکه بتوانید یک شاخه را به ریپازیتوری از راه دور Push کنید، ابتدا باید یک شاخه محلی ایجاد کنید.
اگر قبلا شاخه محلی دارید، میتوانید از git checkout استفاده کنید:
git checkout <name>
اگر شاخه مورد نیاز خود را از قبل ندارید، میتوانید یک شاخه جدید مانند این ایجاد کنید:
git checkout -b <name>
اکنون که میدانیم چگونه یک شاخه محلی جدید ایجاد کنیم، بیایید نگاهی به نحوه ایجاد یک شاخه از راه دور بیندازیم.
ایجاد شاخههای از راه دور
شما میتوانید شاخه محلی خود را به یک ریپازیتوری از راه دور هدایت کرده و به یک شاخه از راه دور تبدیل کنید. وقتی شاخه از راه دور باشد، این بدان معناست هرکسی که به ریپازیتوری از راه دور دسترسی دارد اکنون به شاخه از راه دور نیز دسترسی دارد.
اگر میخواهید شعبه شاخه محلی خود را به ریپازیتوری از راه دور هدایت کنید، میتوانید از git push استفاده کنید:
git push -u origin <name>
حذف شاخهها
اکنون که میدانیم چگونه یک شاخه محلی و یک شاخه از راه دور ایجاد کنیم، بیایید یاد بگیریم که چگونه آنها را حذف کنیم. ما با حذف یک شاخه محلی با استفاده از فلگ d- شروع خواهیم کرد:
git branch -d <name>
گاهی اوقات گیت از حذف شاخه محلی شما جلوگیری میکند. این اتفاق زمانی رخ میدهد که شاخه شما شامل کامیتهایی باشد که در شاخههای دیگر ادغام نشده یا به ریپازیتوریهای از راه دور منتقل نشده باشد. این امر به منظور محافظت از شما در از دست دادن تصادفی دادههایتان است.
اگر مطمئن هستید که میخواهید شاخه خود را حذف کنید، میتوانید از فلگ D- استفاده کنید. این فلگ حذف را اجباری میکند.
git branch -D <name>
حذف شاخههای از راه دور
برای حذف یک شاخه از راه دور، از دستور git push استفاده کنید:
git push origin --delete <name>
ادغام شاخهها
ادغام گیت یک عملکرد اساسی در شاخهبندی است. ادغام به شما امکان میدهد از طریق کامیت به دو یا چند شاخه بپیوندید. فقط شاخه هدف تغییر میکند. برای ما این شاخه اصلی خواهد بود. تاریخچه ویژگی شاخه شما نیز حفظ میشود.
بیایید به ویژگیای که با تیم خود کار کردهاید، فکر کنیم. کل تیم شما به شاخه اصلی که در ریپازیتوری از راه دور آپلود کردهاید، دسترسی دارند. شما در حال کار بر روی تغییر کوچکی از ویژگی هستید و نمیخواهید کار شما روی شاخه اصلی تأثیر بگذارد.
برای تست تغییرات خود میتوانید شاخه خود را ایجاد کنید. پس از تکمیل و تست میتوانید آن شاخه را در شاخه اصلی ادغام کنید تا برای همه قابل دسترسی باشد.
در این سناریو شما می خواهید شاخه آزمایشی خود را به نام myfeature در شاخه اصلی ادغام کنید. قبل از ادغام باید یک git fetch انجام دهید تا اطلاعات به روز در مورد ریپازیتوری از راه دور را جمع آوری کنید.
git fetch --all
سپس به شاخهای بروید که میخواهید تغییرات خود را در آن ادغام کرده و git checkout را انجام دهید.
git checkout main
اکنون میتوانید myfeature را در شاخه اصلی ادغام کنید.
git merge myfeature
برای تأیید ادغام هم میتوانید تاریخچه کامیت پروژه خود را در ریپازیتوری خود بررسی کنید. اگر ادغام شما موفقیت آمیز باشد و کارتان در myfeature تکمیل شده باشد، میتوانید آن شاخه آزمایشی را حذف کنید زیرا همه تغییرات اکنون در شاخه اصلی ادغام شدهاند.
تجدید شاخهها
rebase مفهومی پیشرفته در گیت است. ممکن است کمی پیچیده به نظر برسد، اما ما اصول را مرور خواهیم کرد. تجدید و ادغام بسیار شبیه به هم هستند. هر دو گزینه کامیتها را از یک شاخه میگیرند و آنها را در شاخه دیگری قرار میدهند.
تفاوت عمده بین rebase و merge در این است که پس از انتقال کار از شاخه feature به شاخه main، rebase تاریخچه شاخه feature را پاک میکند. برخی از توسعه دهندگان این روش را ترجیح میدهند زیرا با یک فرآیند بررسی ساده تضمین میشود.
در اینجا نحوه استفاده از rebase آورده شده است:
git checkout myfeature
git rebase main
کلام آخر
بسیاری از تیمها از گیت استفاده میکنند، بنابراین مهم است که درک خوبی از سیستم کنترل و ویژگیهای آن داشته باشیم. هنوز چیزهای زیادی برای یادگیری در گیت وجود دارد. قصد داریم برخی از مفاهیم زیر را در آینده پوشش دهیم:
- دستکاری پیشرفته ریپازیتوری
- درخواستهای pull
- دستورات گیت
برای شروع کار با این مفاهیم و موارد دیگر نیز میتوانید این دوره آموزشی را دنبال کنید. این دوره اصول گیت را به مفاهیم پیشرفتهتر میرساند. در پایان نیز درک خوبی از گیت خواهید داشت که به شما در طول زندگی حرفهای بسیار کمک میکند.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید