Thuta Learning
Git & GitHub: Collaboration and Professional Workflows
AdvancedDevOps & Toolsintermediate

ပရော်ဖက်ရှင်နယ် Branching နည်းဗျူဟာများ

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • ပရော်ဖက်ရှင်နယ် Branching နည်းဗျူဟာများ concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • Diagram ကို ဖတ်ပြီး Git/GitHub workflow ထဲမှာ state (သို့) data ဘယ်လိုစီးဆင်းသလဲ ခြေရာခံနိုင်ရန်
  • ကိုယ့် project/team အတွက် ဘယ်လို အသုံးချသင့်သလဲ ဆုံးဖြတ်နိုင်ရန်

နားလည်ထားရမယ့် အချက်

team တိုင်းမှာ ရိုးရိုးရှင်းရှင်း မေးခွန်းတစ်ခုအတွက် ရှင်းလင်းတဲ့ အဖြေတစ်ခု နောက်ဆုံးလိုအပ်ပါတယ် — ဒီမှာ branch ဆိုတာ ဘာကိုဆိုလိုသလဲ၊ code ဟာ ဘယ်တော့ main ကိုရောက်သလဲ။ အသုံးများတဲ့ strategy လေးမျိုးက ဒါကို မတူညီစွာ ဖြေကြပါတယ် — မှန်ကန်တဲ့ ရွေးချယ်မှုက technical အလှအပထက် team အရွယ်အစားနဲ့ release cadence အပေါ် ပိုမူတည်ပါတယ်။

Strategyဘယ်သူအတွက်အသင့်တော်ဆုံးလဲ
Trunk-based developmentCI ကောင်းကောင်းနဲ့ feature flag ရှိတဲ့ team သေးသေးလေးတွေအတွက် — main ပေါ် တိုက်ရိုက် ဒါမှမဟုတ် အလွန်တိုတောင်းတဲ့ branch ဖြင့် commit လုပ်ကြသည်။
Feature branchingteam တိုင်းသုံးနိုင်တဲ့ base convention — အလုပ်တစ်ခုစီကို အသင့်ဖြစ်တဲ့အထိ branch သီးသန့်ပေါ် ခွဲခြားထားပြီး release process အတိအကျ မလိုအပ်ပါ။
GitHub Flowအဆက်မပြတ် ship လုပ်နေတဲ့ web team အများစုအတွက် — main ကနေ branch ခွဲ၊ PR စောစော ဖွင့်၊ review၊ merge၊ main ကနေ deploy။
Git Flowversion အများကြီးကို တစ်ပြိုင်နက် support ပေးရမယ့် သတ်မှတ်ထားတဲ့ release schedule ရှိတဲ့ software အတွက် — develop၊ release၊ hotfix branch တွေ ထပ်ထည့်ပါတယ်။

GitHub Flow ဟာ GitHub ရဲ့ pull request tool တွေနဲ့ သဘာဝကျကျ ကိုက်ညီပြီး team အများစုအတွက် default ကောင်းတစ်ခုပါ။ Git Flow ရဲ့ extra ceremony ကတော့ version အများကြီးကို တစ်ပြိုင်နက်တည်း support ပေးရမယ့် packaged application ဒါမှမဟုတ် embedded firmware အတွက် တန်ဖိုးရှိပေမယ့် web app ကို နေ့စဉ် ship လုပ်နေတဲ့ team သေးသေးလေးအတွက်တော့ များသောအားဖြင့် overkill ဖြစ်ပါတယ်။

text
GITHUB FLOW: THE DEFAULT FOR MOST MODERN TEAMS
----------------------------------------------
main -------o------------------------o------> (deployable)
              \                     /
               branch (feature/x)
                \--commit--commit--/
                        |
                   open PR, review,
                   checks pass, merge

Git Flow adds more structure on top of this: a long-lived
develop branch, dedicated release branches, and separate
hotfix branches -- useful for scheduled, versioned releases.

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

ဒီ ဥပမာမှာ GitHub Flow ရဲ့ naming convention ကို repo အစစ်ထဲမှာ ပြသထားပါတယ် — main ပေါ်မှာ initial commit လုပ်ပြီးနောက် git checkout -b feature/user-authentication က main ကနေတိုက်ရိုက် branch အသစ်တစ်ခု ဖန်တီးပေးပါတယ်၊ လုပ်နေသူထက် လုပ်ဆောင်ချက်ကို ဖော်ပြတဲ့ နာမည်နဲ့ပါ။

main ကနေ branch ခွဲထုတ်ခြင်း

git checkout -b feature/user-authentication က branch အသစ်ပေါ် ပြောင်းစေပါတယ်၊ git branch --show-current က အတည်ပြုပြီး git branch က branch နှစ်ခုလုံးကို active ဖြစ်တဲ့ဟာကို ကြယ်ပွင့်နဲ့ ဖော်ပြပါတယ်။

PR စောစော ဖွင့်ခြင်း

branch ကို push လုပ်ပြီး review လုပ်စရာရှိလာတာနဲ့ main ကို pull request ဖွင့်ပါ — အလုပ်မပြီးသေးလည်း team ဝင်တွေ စောစီးစွာ comment ပေးနိုင်ပါတယ်။

Merge နဲ့ Deploy

check တွေ pass ပြီး reviewer approve လုပ်လိုက်ရင် branch က main ထဲ merge ဖြစ်ပြီး continuous-deployment setup ဆိုရင် main က အလိုအလျောက် deploy ဖြစ်သွားပါတယ်။

Branch ဖျက်ခြင်း

GitHub Flow branch တွေက ရက်အနည်းငယ်အတွင်း merge ဖြစ်ဖို့ ရည်ရွယ်ထားတာမို့ ဖျက်ပစ်ရပါတယ် — main ကို အမြဲ deployable လို့ယူဆလို့ develop၊ release၊ hotfix branch မလိုအပ်ပါဘူး။

အတူတူ စမ်းရေးကြည့်မယ်

bash
export GIT_AUTHOR_NAME="Thuta Learner"
export GIT_AUTHOR_EMAIL="learner@example.com"
export GIT_COMMITTER_NAME="Thuta Learner"
export GIT_COMMITTER_EMAIL="learner@example.com"

git init
export GIT_AUTHOR_DATE="2026-01-01T09:00:00"
export GIT_COMMITTER_DATE="2026-01-01T09:00:00"
echo "v1" > app.js
git add app.js
git commit -m "Initial commit on main"

git checkout -b feature/user-authentication
git branch --show-current
git branch
You should see
git branch --show-current က ဒါကို print လုပ်ပါတယ်:

feature/user-authentication

git branch က branch နှစ်ခုလုံးကို active ဖြစ်တဲ့ဟာကို ကြယ်ပွင့်နဲ့ ပြပါတယ်:

* feature/user-authentication
  main

၅ မိနစ် စမ်းကြည့်

web app ကို နေ့စဉ် ship လုပ်နေတဲ့ team သေးသေးလေးတစ်ခုအတွက် trunk-based development နဲ့ GitHub Flow ကြားက ရွေးပြီး ဘာကြောင့်လဲ ရေးချပါ။ ပြီးရင် အဲ့ team ကိုပဲ desktop software ကို လေးလတစ်ကြိမ် release လုပ်ပြီး version အဟောင်းတွေကို long-term support ပေးရမယ်ဆိုရင် Git Flow ရဲ့ branch ထပ်တွေက overhead ကို တန်ရဲလား စဉ်းစားပါ။ အဖြေနှစ်ခုစလုံးကို ရှင်းပြပါ။

သတိလေးတစ်ချက်

ship မြန်မြန်လုပ်နေတဲ့ team သေးသေးလေးအတွက် Git Flow ရဲ့ branch structure အပြည့်အစုံကို သုံးရင် process overhead တွေတိုးပြီး safety အစစ်အမှန် ဘာမှမရှိဘဲ release ကို နှေးစေပါတယ်။

GitHub Flow feature branch ကို ရက်အစား သီတင်းပတ်ချီပြီး ရှင်ထားရင် ရည်ရွယ်ချက်ကို ဖျက်ဆီးလိုက်တာပါ — branch ရှည်ကြာလာရင် main နဲ့ အလှမ်းကွာလာပြီး merge conflict ဆိုးဆိုးဝါးဝါး ဖြစ်စေပါတယ်။

GitHub Docs - GitHub flowGit & GitHub

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • ship မြန်မြန်လုပ်နေတဲ့ team သေးသေးလေးအတွက် Git Flow ရဲ့ branch structure အပြည့်အစုံကို သုံးရင် process overhead တွေတိုးပြီး safety အစစ်အမှန် ဘာမှမရှိဘဲ release ကို နှေးစေပါတယ်။
  • GitHub Flow feature branch ကို ရက်အစား သီတင်းပတ်ချီပြီး ရှင်ထားရင် ရည်ရွယ်ချက်ကို ဖျက်ဆီးလိုက်တာပါ — branch ရှည်ကြာလာရင် main နဲ့ အလှမ်းကွာလာပြီး merge conflict ဆိုးဆိုးဝါးဝါး ဖြစ်စေပါတယ်။
  • Destructive (သို့) history ပြောင်းလဲနိုင်တဲ့ command တိုင်းကို run မခင် git status နဲ့ လက်ရှိအခြေအနေကို အမြဲစစ်ပါ။

လေ့ကျင့်ခန်း

web app ကို နေ့စဉ် ship လုပ်နေတဲ့ team သေးသေးလေးတစ်ခုအတွက် trunk-based development နဲ့ GitHub Flow ကြားက ရွေးပြီး ဘာကြောင့်လဲ ရေးချပါ။ ပြီးရင် အဲ့ team ကိုပဲ desktop software ကို လေးလတစ်ကြိမ် release လုပ်ပြီး version အဟောင်းတွေကို long-term support ပေးရမယ်ဆိုရင် Git Flow ရဲ့ branch ထပ်တွေက overhead ကို တန်ရဲလား စဉ်းစားပါ။ အဖြေနှစ်ခုစလုံးကို ရှင်းပြပါ။

You'll know it worked when: git branch --show-current က ဒါကို print လုပ်ပါတယ်: feature/user-authentication git branch က branch နှစ်ခုလုံးကို active ဖြစ်တဲ့ဟာကို ကြယ်ပွင့်နဲ့ ပြပါတယ်: * feature/user-authentication main