Skip to main content

Understanding Git Flow - Branching Models

Understanding Git Flow - Branching Models


Branching Model

Software Development Team တစ်ခုမှာ ဆိုရင် latest released code တွေ၊ latest stable development code တွေ နဲ့  development in progress ဖြစ်နေတဲ့ code တွေ နဲ့ ဘယ် release version မှာ ဘယ် code တွေကို  release လုပ်ခဲ့တယ်ဆိုတာတွေကို စနစ်တကျ manage လုပ်ရပါတယ်။ အဲ့လို Team Collaboration လုပ်ရတဲ့အချိန်မှာဆို သင့်တော်ရာ Branching Models တစ်ခုခုကို ရွေးရပါတယ်။ မဟုတ်ရင်တော့ code conflict တွေနဲ့ unstable၊​ uncompleted  feature တွေကို ထိန်းသိမ်းရခက်ပါတယ်။

Popular of branching models

Branching Models တွေထဲမှာမှ လူသုံးများပြီး ပေါ်ပြူလာ အဖြစ်ဆုံး Branching Model နှစ်ခုကတော့ အောက်ပါအတိုင်းနှစ်မျိုးရှိပါတယ်။
  1. Git Flow
  2. Trunk Based

Git Flow



Main Branches

Git Flow မှာ main branches အနေနဲ့ master နဲ့ develop ဆိုပြီးနှစ်ခုရှိပါတယ်။ 

Master(main)  Branch 

Master branch ကတော့ latest features တွေထားပါတယ်။ master branch ဟာ နောက်ဆုံး release လုပ်ထားတဲ့ production မှာရှိနေတဲ့ code တွေနဲ့ ထပ်တူကျရပါမယ်။ Production မှာ အကြောင်းအမျိုးမျိုးကြောင့် ပြသနာတစ်ခုခုတက်ခဲ့ရင် Production ကို master မှာရှိတဲ့ code ကို deploy လုပ်တာနဲ့ အကုန်လုံး အရင်တိုင်းပြန်ဖြစ်ရပါမယ်။ အတိုချုပ်ဆိုရင်တော့ master branch မှာ production code တွေထားပါတယ်။

Develop Branch 

Develop branch ကတော့ latest stable feature တွေထားပါတယ်။ develop ဆိုတဲ့ နာမည်အတိုင်း feature တွေ တစ်ခုခု develop လုပ်ပြီး stable ဖြစ်တာနဲ့ develop ကို merge လုပ်ပါတယ်။ အဲ့ဒါကြောင့် latest stable code/feature တွေကို ထားတယ်လို့ပြောတာပါ။ master နဲ့ မတူတာက master က production release လုပ်ပြီးသား code တွေပါ။ develop မှာတော့ development လုပ်ပြီး stable ဖြစ်နေတဲ့ feature တွေပါ၊ production release မလုပ်ရသေးခင်ပေါ့။

Supporting Branches

Feature Branches 

Feature branch ကတော့ feature/function တစ်ခုကို develop လုပ်ဖို့သုံးပါတယ်။ git flow မှာ feature တစ်ခု အတွက် feature branch တစ်ခု create လုပ်ပြီး develop လုပ်ပါတယ်။ Feature branch တစ်ခု ကို create လုပ်မယ်ဆိုရင် develop branch ကနေလုပ်ရပါတယ်။ development ပြီးတာနဲ့ feature branch ကနေ develop branch ကို merge လုပ်မယ်၊ ပြီးရင် feature branch ကို delete လုပ်ပါ။ feature branch ကို create လုပ်တဲ့ အခါ feature/xxxx naming နဲ့လုပ်ရပါတယ်။
ဥပမာ branch name: 
  • feature/featureA
  • feature/featureB


Release Branch

Release branch ကတော့ ကိုယ် target လုပ်ထားတဲ့ features/functions တွေအကုန် development နဲ့ testing တွေအကုန်ပြီးရင် release branch တစ်ခု create လုပ်ပြီး production release လုပ်ရပါတယ်။ release branch ကိုတော့ develop branch ကနေ create လုပ်ရပါတယ်။ develop branch မှာ latest stable code တွေရှိနေလို့ပါ။ Production release လုပ်ပြီးတာနဲ့  release branch ကနေ master branch ကို merge လုပ်ရပါတယ်။ ပြီးရင်တော့  release branch ကို ဖျက်ရပါတယ်။ master branch မှာ release version နဲ့ tag လုပ်ထားရပါမယ်။ release branch ကို create လုပ်တဲ့ အခါ release/xxxx naming နဲ့လုပ်ရပါတယ်။
ဥပမာ branch name: 
  • release/1.0.0
  • release/1.1.0


Hotfix Branch

Hotfix branch ကတော့ production release လုပ်ပြီးလို့၊ အကြောင်းအမျိုးမျိုးကြောင့် issue/error တစ်ခုခုရှိနေတယ် fix လုပ်ဖို့ လိုနေတယ်ဆိုရင်တော့ hotfix branch တစ်ခု create လုပ်ပြီး bug fix အနေနဲ့ production release ပြန်လုပ်ပေးရပါတယ်။ hotfix branch ကိုတော့ master branch ကနေ create လုပ်ရပါတယ်။ ဘာလို့လဲဆိုတော့ master branch မှာ latest production code တွေရှိလို့ပါ။ hotfix release လုပ်ပြီးတာနဲ့ hotfix branch ကို master နဲ့ develop ကို merge လုပ်ရပါတယ်။ ပြီးရင်hotfix branch ကိုဖျက်မယ်။ master branch မှာ release version နဲ့ tag လုပ်ထားရပါမယ်။ hotfix branch ကို create လုပ်တဲ့ အခါ hotfix/xxxx naming နဲ့လုပ်ရပါတယ်။
ဥပမာ branch name:  
  • hotfix/1.0.1
  • hotfix/1.0.2


Git Flow Extension

Git Flow extension ကတော့ git flow ကို implement လုပ်တဲ့ခါ feature/release/hotfix branch တို့ကို createတာတို့  merge လုပ်တာတို့ကို အလွယ်ကူဆုံးဖြစ်အောင်နောက်ကွယ်ကလုပ်ပေးပါတယ်။ အသေးစိတ်ကို GitFlow ဒီမှာဖတ်ရှုနိုင်ပါတယ်။

Related Articles:

Popular posts from this blog

Pigeon Myanmar's free Wireguard VPN

Pigeon Myanmar's free Wireguard VPN  Pigeon Myanmar ရဲ့ Free VPN service ကိုအသုံးပြုရန်အတွက် အောက်ပါ Telegram Chatbot ကို message ပို့ပြီး Config file ဒါမှမဟုတ် QR Code ကိုရယူနိုင်ပါတယ်။ အသုံးမပြုလိုသူများ၊ newvpn request မလုပ်ဖို့မတ္တာရပ်ခံအပ်ပါတယ်၊ client က limit ရှိတာကြောင့် လိုအပ်တဲ့သူတွေမရမှာစိုးလို့ပါ။ Telegram Chat Bot Telegram Chat Bot:  https://t.me/pigeonmyanmarbot Chat Bot မှာ /start ကိုလို့ပို့ပြီး သက်ဆိုင်ရာ Operation ကိုရေးပြီး VPN အသုံးပြုရန်အတွက် QR Code ဒါမှမဟုတ် Config file ရယူနိုင်ပါတယ်။ Telegram Account တစ်ခုကို client တစ်ခုသတ်မှတ်ထားဒါကြောင့် နောက်အကြိမ်တွေ ထပ်မှတ်ရယူပါကလည်း client အဟောင်းကိုသာ ရရှိတော့မှဖြစ်ပါတယ်။ QR Code/Config File ကို ပျောက်ပျက်သွားတဲ့အခါမှာလည်း ထပ်မံတောင်းခံ ကြည့်ရှူနိုင်ပါတယ်။   /newvpnqr - VPN QR Code ရယူရန်။ /newvpn - VPN Config File ရယူရန်။ VPN Installation and Setup သက်ဆိုင်ရာ Application ကိုအောက်ပါ link များမှ install လုပ်ပါ။  Application မှာ  + / Add a tunnel ခလုတ်နှိပ်ပါ။  Create from file or archive ...

Editor Config

Editor Config ကျွန်တော်တို့ Developer တွေတော်တော်များများက၊ ကိုယ်နဲ့ကျွမ်းကျင်ရာ ဒါမှမဟုတ် နှစ်သက်ရာ IDE/Text Editor တွေကို သုံးလေ့ရှိကြပါတယ်။ အဲ့နေရာမှာ ပြသနာတစ်ခုက IDE/Text Editor မတူတာနဲ့ Coding Style, Format တွေမှာ မတူတာ တွေဖြစ်တတ်ကြပါတယ်။ ဥပမာ - Eclipse သုံးတဲ့သူ အချင်းချင်းဆို setting ကို export လုပ်ပြီး အတူတူထားလို့ရပေမယ့်၊​ IntelliJ IDEA သုံးတဲ့သူတွေနဲ့ ဆို အဆင်မပြေဖြစ်ပြန်ရော။ Visual Studio Code, Atom, Sublime Text တွေကအများကြီးကို ကြားထဲ Indentation တွေ၊ Code Style တွေကို Standardize လုပ်ဖို့ ခက်ခဲလာတယ်။ အဲ့ဒါကြောင့် တစ်ချို့  Company/Project တွေဆိုရင် ဘယ် IDE/ Text Editor ပဲသုံးရမယ်ဆိုပြီးသတ်မှတ်ထားလေ့ရှိကြတယ်။ အကျိုးဆက်အနေနဲ့ကတော့ Productivity နဲ့ Developers တွေက သတ်မှတ်ထားတဲ့ tools တွေနဲ့ အကျွမ်းဝင်ဖို့ အချိန်ပေးရပါတယ်။ အဲ့ဒါ တွေကို Editor Config ကအလွယ်တကူဖြေရှင်းပေးနိုင်ပါတယ်။ Editor Config ရဲ့ အားသာချက်ကတော့ အတော်များများ IDE/ Text Editor တွေမှာ built-in ပါပြီးသားဖြစ်ပြီး၊ built-in မပါရင်လဲ Plugin တွေက အတော်များများအတွက်ရှိပါတယ်။  # EditorConfig is awesome: http...

How to use GIT? GIT ကိုဘယ်လို အသုံးပြုကြမလဲ (Cheat sheet)...

How to use GIT?  Git အသုံးပြုပုံကို နားလည်ကျွမ်းကျင်ဖို့ GIT ဘယ်လိုအလုပ်လုပ်လဲ ဆိုတာ နည်းနည်းတော့ သိထားဖို့လိုလိမ့်မယ်။  File ရဲ့ statuses တွေနဲ့ file transitions တွေကို သေချာ နားလည်ထားဖို့လိုတယ်။ File status မှာဆိုရင် file တစ်ခုကို git ကဘယ်အချိန်မှာ track စလုပ်လဲ၊ ဘယ်အချိန်မှာ modified, unmodified, staged statuses တွေဖြစ်သွားလဲဆိုတာတွေ နဲ့ File transitions မှာဆိုရင် file တစ်ခုက ဘယ် command run ရင် local repository မှာရှိတယ်။ ဘယ် command run ရင်တော့ remote repository (server) ကိုရောက်သွားလဲ ဆိုတာတွေကို အနည်းငယ်နားလည်ထားဖို့တော့လိုမယ်။ Git File Statuses Git မှာ file တွေကို track လုပ်နေတဲ့ statuses တွေရှိတယ်။ အဲ့ဒါတွေကတော့ အောက်ပါအတိုင်းဖြစ်တယ်။ Untracked Unmodified Modified Staged Untracked Status Untracked ဆိုတာက file တစ်ခုက ပထမဆုံး create လုပ်ပြီးတဲအချိန်မှာ git က အဲ့ file ကိုလုံးဝ track မလုပ်ရသေးတဲ့ file တွေက git မှာ untracked အနေနဲ့ရှိနေတယ်။ အဲ့ဒါကို git ကို စပြီး track လုပ်စေချင်တယ်ဆိုင်တော့ git add <file> command နဲ့ git ကို စ track လုပ်ခိုင်းလို့ရတယ်။ အဲ့လို git ad...