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 α€’ါα€™ှα€™α€Ÿုတ် Create from QR

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 add α€œုပ်α€œို

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: https://Edito