Ali Shobeyri
Ali Shobeyri
خواندن ۳ دقیقه·۵ سال پیش

مهندسیِ گیت با GitFlow

فرق یک مهندس نرم افزار با یک "کد زدن" اینه که یه مهندس جریان توسعه محصول رو مهندسی می‌کنه و یک معماری زیبا از اون در میاره در صورتی که "کد زن" فقط و فقط کد میزنه ! امروز می‌خوام شما رو با GitFlow آشنا کنم ! روندی برای معماری بخشیدن به سیر توسعه با Git .

GitFlow
GitFlow

به تصویر بالا دقت کنید ، پیچیده است ؟ بله اما به پروژه شما نظم می‌بخشه ! GitFlow مجموعه ای از Branch هاست که هر Branch مختص کارِ خاصی ساخته شده ، وقتی شما یک پروژه رو ایجاد می‌کنید باید GitFlow مربوط بهش رو هم با توجه به ابزاری که استفاده می‌کنید (Gitlab و ...) ایجاد کنید .

دقت کنید که این قضیه برای تیم های بالای 2 3 نفره ، پس اگه کلا 2 نفر تو تیمتون دارید خیلی لازم نیست به خودتون دردسر بدید !

به ترتیب Branch ها رو مورد بررسی قرار میدیم :

Master

این Branch اصلی با یک Tag هست که مشخص کننده شماره نسخه شماست ، اون چیزی که قراره در Market بگذارید (مثلا کافه بازار) در این Branch قرار می‌گیره

Release

این Branch یک نسخه آماده است که Feature های مورد نظرتون توش اضافه شده و تست شده ، اگه باگی روی این Branch از سمت Tester ها پیدا شد روی همین Branch درست میشه نه اینکه از Branch دیگه Fork بزنیم (طبق عکس) ، وقتی Release به اتمام رسید Branch مربوطه اش از git پاک خواهد شد .

Develop

این Branch شامل کدهایی هست که از نظر توسعه کلی ممکنه کامل نباشن ولی از نظر Feature کاملن ، منظور اینه که Feature شماره 2 روی این نسخه درسته ولی برای رسیدنش به Release لازمه Feature شماره 1 و 3 هم اضافه بشن

Feature

ما به ازای هر Feature جدیدی که قراره اضافه کنیم یک Branch جدید از Develop میسازیم (Fork) و تا زمانی که اون Feature کامل نشده باشه ، commit ها رو روی این Branch انجام میدیم ، به محض اینکه مطمئن شدیم Feature کامله اون رو روی Develop میندازیم (merge) ، وقتی Feature به اتمام رسید Branch مربوطه اش از git پاک خواهد شد .

HotFix

این Branch شامل Fork هایی از Branch اصلی (Master) هست که تغییراتی که روش میدیم خیلی جزئیه ، مثلا یک tag قراره عوض بشه یا یه url رو عوض قراره بکنیم (خیلی خیلی کوچیکن تغییرات) ، و وقتی تموم شد باید روی Master انداخته بشه و همین طور روی Develop ، وقتی HotFix به اتمام رسید Branch مربوطه اش از git پاک خواهد شد .

برای پیاده سازی GitFlow خیلی راحت با همون Command های Git می‌تونید این کار رو انجام بدید ولی ابزاری به نام GitFlow Extension هم وجود داره که البته روی خود Git هست و نیازی به دانلود چیزی جدید ندارید ! کافیه به مسیر پروژه برید و git flow init رو اجرا کنید !

$ git flow init Initialized empty Git repository in ~/project/.git/ No branches exist yet. Base branches must be created now. Branch name for production releases: [master] Branch name for &quotnext release&quot development: [develop] How to name your supporting branch prefixes? Feature branches? [feature/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? [] $ git branch * develop master

لیستِ Command های مورد نیاز

وقتی بخواهیم یک Branch برای Feature ایجاد کنیم :

بدون گیت فلو :

git checkout develop git checkout -b feature_branch

با گیت فلو :

git flow feature start feature_branch

وقتی Feature ما تمام میشه :

بدون گیت فلو اکستنشن :

git checkout develop git merge feature_branch

با گیت فلو اکستنشن :

git flow feature finish feature_branch

وقتی میخوایم Develop رو به Release منتقل کنیم :

بدون گیت فلو اکستنشن :

git checkout develop git checkout -b release/0.1.0

با گیت فلو اکستنشن :

$ git flow release start 0.1.0 Switched to a new branch 'release/0.1.0'

وقتی بخوایم Release رو به Master منتقل کنیم :

بدون گیت فلو اکستنشن :

git checkout master git merge release/0.1.0

با گیت فلو اکستنشن :

git flow release finish '0.1.0'

وقتی بخوایم Hotfix ها رو درست کنیم :

بدون گیت فلو اکستنشن :

git checkout master git checkout -b hotfix_branch

با گیت فلو اکستنشن :

$ git flow hotfix start hotfix_branch

وقتی Hotfix ها حل شدند و میخوایم روی Master و Develop منتقل کنیم :

بدون گیت فلو اکستنشن :

git checkout master git merge hotfix_branch git checkout develop git merge hotfix_branch git branch -D hotfix_branch

با گیت فلو اکستنشن :

$ git flow hotfix finish hotfix_branch


یک نوشته به صورت تکمیلی برای IDE هایی که Intellij ساخته (مثل اندروید استدیو) هم نوشتم که می‌تونید بخونید .

gitگیتمهندسی نرم افزاربرنامه نویسیاندروید
برنامه نویس اندروید - https://www.linkedin.com/in/iryebohs/
انجمن جاواکاپ مطالب برنامه‌نویسی مرتبط به آموزش جاوا، نکات جذاب برای برنامه‌نویسان، آموزش بهتر کد زدن و .. را از طریق انتشارات بازنشر می‌کند. آدرس وب‌سایت: www.javacup.ir
شاید از این پست‌ها خوشتان بیاید