codingcogs' logo

برنچ های گیت

انشعاب (یا شاخه) یا Branchهای یک ریپازیتوری یکی از ویژگی‌های مهم در Git است. با بکارگیری Branchها می‌توایم کارهای مختلف مثل توسعه‌ی featureهای جدید و کار روی bugها را بهتر مدیریت کنیم.

برای ساخت یک Branch و استفاده از آن از دستور زیر استفاده می‌کنیم:

git checkout -b <branch-name>

دستور بالا یک branch جدید از branch فعلی با نام <branch-name> ایجاد می‌کند و این branch را به عنوان branch فعال قرار می‌دهد.

با دستور زیر نیز می‌توانیم به یک branch موجود برگردیم:

git checkout <branch-name>

دقت کنید که اگر تغییرات commit نشده در کد داده باشید، با پیغام خطا مواجه می‌شوید و باید تغییرات را commit، یا stash یا حذف کنید.

یادگیری بیشتر Git

با دقت بیشتر و کنترل درست GitFlow و استفاده‌ی درست از Git نیاز به یادگیری دقیق آن بسیار کم می‌شود اما هنوز هم ممکن است مشکلی بوجود بیاید و دانش عمیق از Git به شما کمک بیشتری می‌کند. برای یادگیری بیشتر می‌توانید از اینجا شروع کنید:

https://git-scm.com/doc

GitOps و Gitflow

به خاطر درگیری ریپازیتوری‌ها با عملیات DevOps یک مفهوم جدید در دنیای نرم‌افزار به نام GitOps شکل گرفت که در آن به جای استفاده‌ی پیشرفته از Git با بکارگیری ساختارهای مختلف بکارگیری و پیاده‌سازی DevOps را راحت‌تر می‌کنیم و همه چیز نظم بیشتری پیدا می‌کند.

چرا GitOps ؟

  • افزایش سرعت توسعه
  • رفع مشکل سریع‌تر در صورت بروز خطا
  • راحت‌تر شدن مدیریت ریپازیتوری
  • داکیومنت بهتر Branchها و کد
  • ساده‌تر شدن درک کدبیس و تغییرات

مبانی GitOps :

  • بیان واضح‌تر فرآیند Version Control و سیستم در حال توسعه
  • داشتن وضعیت واضح‌تر و قابل فهم‌تر در Git
  • بکارگیری فرآیند‌های اتوماسیون و code review
  • داشتن سیستم تست، alert و قابلیت ریکاور شدن ساده‌تر از تغییرات اشتباه

اولین قدم برای پیاده‌سازی اصولی GitOps داشتن یک ریپازیتوری ساختار یافته است. به تصویر زیر دقت کنید:

GitOps Gitflow structure

در تصویر بالا 2 branch اصلی master و develop را داریم. باقی branchها نیز از یکی از این 2 branch ایجاد می‌شوند. 2 نکته را باید در حین کار در نظر بگیریم:

  1. ایجاد branch درست از branch مبدا مناسب
  2. نامگذاری درست branch

مثلا فرض کنید یک باگ روی نسخه‌ی اولیه محصول داریم. در این حالت باید از branch اصلی (main یا master یا هر نامی که سازمان شما برای این branch دارد) یک branch جدید به نام <hotfix/bug-name> ایجاد کنید و مشکل را در این branch حل کرده و سپس <hotfix/bug-name> با branch اصلی merge کنید.

یا مثلا اگر قصد اضافه کردن feature را دارید باید از branch توسعه‌ی خود یک branch به نام <feature/feature-name> ایجاد کرده و کار خود را روی آن پیش ببرید.

ضمنا با دستور زیر می‌توانید یک branch جدید نیز بسازید و بدون فلگ -b روی آن checkout کنید:

git branch <hotfix/bug-name>
# یا
git branch <feature/feature-name>