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

Pull Request: GitHub ၏ အဓိက Workflow

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

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

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

Pull request ကို PR ဟု အတိုကောက်များသောအားဖြင့် ခေါ်ကြပြီး branch တစ်ခု၏ ပြောင်းလဲမှုများကို review လုပ်ပြီး merge ရန် တောင်းဆိုချက်တစ်ခုဖြစ်ပါတယ် — ပုံမှန်အားဖြင့် သင့် feature branch ကို main ထဲကို ပါပဲ။ ၎င်းသည် GitHub ၏ အဓိက workflow ဖြစ်ပါတယ်။

အဆင့်များက သင်သိပြီးသား local Git ပေါ်တည်ဆောက်ထားပါတယ် — branch တစ်ခု create လုပ်ပါ၊ code ပြောင်းလဲပါ၊ ပုံမှန်အတိုင်း commit လုပ်ပါ။

Branch ကို push လုပ်ပါ

git push -u origin <branch-name> နှင့် အဲဒီ branch ကို GitHub ပေါ်ကို push လုပ်ပါ။

Pull request ဖွင့်ပါ

GitHub website ပေါ်မှာ pull request တစ်ခုကို ဖွင့်ပါတယ်၊ သင့် branch ကနေ merge ချင်တဲ့ branch ဆီ ညွှန်ပြပေးရင်းပါ။

Review

PR တစ်ခု ဖွင့်တာဟာ ဘာကိုမှ ချက်ချင်း merge မလုပ်ပါ — conversation တစ်ခု စတင်ပေးတာပါ။ Reviewer တွေက comment ချန်ခဲ့နိုင်၊ change တောင်းဆိုနိုင်၊ Actions ဖြင့် check run နိုင်ပါတယ်။

Merge

လူတိုင်း ကျေနပ်မှသာ တစ်ယောက်ယောက်က merge ကို click လုပ်ပါတယ် — ဒါက server ပေါ်မှာ လုပ်ဆောင်တဲ့ git merge ၏ GitHub-hosted version ပါပဲ။

Pull request ကောင်းတစ်ခု၏ title က ပြောင်းလဲသွားတာကို ဝါကျတစ်ခုနှင့် တိကျစွာ ဖော်ပြရပါမယ် — 'fix stuff' မဟုတ်ဘဲ 'Add input validation to login form' လိုမျိုးပါ။ Description က ဘာကြောင့် ပြောင်းလဲရလဲ၊ ဘာမပါဝင်လဲ၊ ဆက်စပ် issue ကို link လုပ်ရမည်ကို ရှင်းပြပါတယ်။

PR ကို ချုံ့ငယ်ထားပါ

ချုံ့ငယ်ပြီး focused ဖြစ်တဲ့ pull request တွေက unrelated change တွေ ရောနှောထည့်ထားတဲ့ ကြီးမားတဲ့ PR တွေထက် ပိုမြန်စွာ review ခံရပြီး ပြဿနာနည်းစွာ merge ဖြစ်ပါတယ်။ PR description ကို reviewer နှင့် နောင်တွင် သင့်ကိုယ်တိုင်အတွက် documentation တစ်ခုအဖြစ် သဘောထားပါ။

text
THE PULL REQUEST FLOW
---------------------
branch --> commit --> push --> open PR --> review --> merge
  |          |          |         |           |          |
 git        git        git      GitHub     comments/   git merge
checkout    commit    push -u   (web UI)    approve     (server)
  -b

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

Pull request တစ်ခု ဖွင့်ခြင်း၏ local ပိုင်းက အောက်ပါ code ထဲမှာ တကယ်ဖြစ်ပျက်တာအတိုင်းပါပဲ — main ကနေ branch တစ်ခု create လုပ်ပါ၊ ဖိုင်တစ်ခု edit လုပ်ပါ၊ ပုံမှန် message ဖြင့် commit လုပ်ပါ၊ -u ဖြင့် push လုပ်ပါ။

Push output က remote ပေါ်မှာ branch အသစ် ရှိပြီဖြစ်ကြောင်း အတည်ပြုပေးပါတယ် — ဒါတစ်ခုတည်းနှင့် pull request မဖြစ်ပါဘူး။

GitHub ပေါ်မှာ ဘာဖြစ်လာမလဲ

GitHub-hosted remote အစစ်တစ်ခုဆီ branch push လုပ်လိုက်ရင် GitHub က branch အသစ်ကို သတိထားမိပြီး 'Compare & pull request' banner ကို repository page ပေါ်မှာ ပြပါလိမ့်မယ်၊ automatic prefill PR ကို ကမ်းလှမ်းရင်းပါ။

၎င်းကို click နှိပ်လိုက်ရင် title နှင့် description field တွေပါဝင်တဲ့ form တစ်ခု ပွင့်လာပါတယ်။ reviewer တွေ notify ရရှိပြီး comment နှင့် တောင်းဆိုထားတဲ့ change တွေ diff ပေါ်မှာ inline ပေါ်လာပြီး approve ဖြစ်သွားရင် merge button တစ်ခု ရနိုင်လာပါတယ်။

Web-side interaction ဒါတွေ ဘယ်ဟာမှ terminal command မရှိပါဘူး — local ပိုင်းကို ခိုင်မာတယ်လို့ ခံစားရအောင် push ကို ကိုယ်တိုင် run ကြည့်ပါ။

Pull Request မဖွင့်ခင် စစ်ဆေးရန်

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

bash
# A local bare repo stands in for the GitHub-hosted remote, so branching,
# committing, and pushing below are all genuinely real -- only opening the
# actual Pull Request afterward happens on GitHub's website.
git init -q --bare ../remote-demo.git
git init -q -b main
git config user.name "Thuta Learner"
git config user.email "learner@example.com"
git remote add origin ../remote-demo.git

echo "// app entry point" > app.js
git add app.js
GIT_AUTHOR_DATE="2026-01-01T09:00:00" GIT_COMMITTER_DATE="2026-01-01T09:00:00" \
  git commit -m "Initial commit"
git push -u origin main

git checkout -b feature/add-login
echo "function login() { return true; }" > login.js
git add login.js
GIT_AUTHOR_DATE="2026-01-01T10:00:00" GIT_COMMITTER_DATE="2026-01-01T10:00:00" \
  git commit -m "Add basic login function"
git push -u origin feature/add-login
You should see
git push -u origin main ->
To <remote-url>
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

git checkout -b feature/add-login လုပ်ပြီး commit လုပ်ပြီးနောက်:

git push -u origin feature/add-login ->
To <remote-url>
 * [new branch]      feature/add-login -> feature/add-login
branch 'feature/add-login' set up to track 'origin/feature/add-login'.

GitHub-hosted remote အစစ်တစ်ခုပေါ်မှာဆိုရင် branch အသစ်တစ်ခု push လုပ်တာနှင့် GitHub က 'Compare & pull request' banner ကို repository page ပေါ်မှာပါ ပြပါလိမ့်မယ် — အဲဒီအပိုင်းက GitHub website ပေါ်မှာသာ ပေါ်လာပြီး ဒီ terminal output ထဲမှာ မပါဝင်ပါဘူး။

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

main ကနေ branch အသစ်တစ်ခု create လုပ်ပါ၊ ဖိုင်တစ်ခု ပြောင်းလဲပြီး commit လုပ်ပါ၊ ပြီးရင် git push -u origin <your-branch> ကို run ပါ။ Push output ထဲမှာ 'new branch' ဆိုတဲ့ စာသားကို ရှာပါ — အဲဒါက GitHub ပေါ် PR ဖွင့်ဖို့ လိုအပ်တဲ့ ပထမဆုံး signal ဖြစ်ပါတယ်။

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

branch ကို push လုပ်တာနှင့် pull request ကိုယ်တိုင် ဖန်တီးမည်ဟု ထင်မှတ်ခြင်း — push ပြီးနောက် GitHub website ပေါ်မှာ တိုက်ရိုက် PR ဖွင့်ရန် လိုအပ်ခြင်း

PR title ကို 'fix' ဒါမှမဟုတ် 'update' လို ရှင်းရှင်းလင်းလင်းမရှိသော general title ဖြင့် ရေးခြင်း — reviewer အတွက် context ဆုံးရှုံးစေခြင်း

GitHub Docs: About pull requestsGit & GitHub

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

  • branch ကို push လုပ်တာနှင့် pull request ကိုယ်တိုင် ဖန်တီးမည်ဟု ထင်မှတ်ခြင်း — push ပြီးနောက် GitHub website ပေါ်မှာ တိုက်ရိုက် PR ဖွင့်ရန် လိုအပ်ခြင်း
  • PR title ကို 'fix' ဒါမှမဟုတ် 'update' လို ရှင်းရှင်းလင်းလင်းမရှိသော general title ဖြင့် ရေးခြင်း — reviewer အတွက် context ဆုံးရှုံးစေခြင်း
  • Destructive (သို့) history ပြောင်းလဲနိုင်တဲ့ command တိုင်းကို run မခင် git status နဲ့ လက်ရှိအခြေအနေကို အမြဲစစ်ပါ။

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

main ကနေ branch အသစ်တစ်ခု create လုပ်ပါ၊ ဖိုင်တစ်ခု ပြောင်းလဲပြီး commit လုပ်ပါ၊ ပြီးရင် git push -u origin <your-branch> ကို run ပါ။ Push output ထဲမှာ 'new branch' ဆိုတဲ့ စာသားကို ရှာပါ — အဲဒါက GitHub ပေါ် PR ဖွင့်ဖို့ လိုအပ်တဲ့ ပထမဆုံး signal ဖြစ်ပါတယ်။

You'll know it worked when: git push -u origin main -> To <remote-url> * [new branch] main -> main branch 'main' set up to track 'origin/main'. git checkout -b feature/add-login လုပ်ပြီး commit လုပ်ပြီးနောက်: git push -u origin feature/add-login -> To <remote-url> * [new branch] feature/add-login -> feature/add-login branch 'feature/add-login' set up to track 'origin/feature/add-login'. GitHub-hosted remote အစစ်တစ်ခုပေါ်မှာဆိုရင် branch အသစ်တစ်ခု push လုပ်တာနှင့် GitHub က 'Compare & pull request' banner ကို repository page ပေါ်မှာပါ ပြပါလိမ့်မယ် — အဲဒီအပိုင်းက GitHub website ပေါ်မှာသာ ပေါ်လာပြီး ဒီ terminal output ထဲမှာ မပါဝင်ပါဘူး။

Pull Request: GitHub ၏ အဓိက Workflow | Thuta Learning