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

GitHub Issues နှင့် Project Tracking

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

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

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

Issue ဆိုတာ code မဟုတ်သေးပေမယ့် အာရုံစိုက်ရန်လိုအပ်တဲ့ မည်သည့်အရာအတွက်မဆို GitHub ရဲ့ tracking unit ပါ — bug report, feature request, task, ဒါမှမဟုတ် open discussion တစ်ခု ဖြစ်နိုင်ပါတယ်။

Pull request နှင့် မတူဘဲ issue တစ်ခုမှာ branch ဒါမှမဟုတ် commit လုံးဝ မပါဝင်ပါဘူး — title, description, open/closed status ပါတဲ့ discussion thread တစ်ခုပဲ ဖြစ်ပေမယ့် GitHub က ၎င်းတို့နှစ်ခုကို link လုပ်ပေးနိုင်ပါတယ်။

ကောင်းစွာရေးထားတဲ့ issue တစ်ခုက ခန့်မှန်းနိုင်တဲ့ ပုံစံတစ်ခုကို လိုက်နာပြီး ၎င်းကို လိုက်နာခြင်းက လူတိုင်းအတွက် အချိန်ကြာစေပါတယ်။

ပြဿနာ

ပြဿနာကို ရှင်းရှင်းလင်းလင်း ဖော်ပြရမယ်။

Expected vs Actual

expected behavior — ဘာဖြစ်သင့်လဲ — ဆက်ပြီး actual behavior — ဘာဖြစ်ခဲ့လဲ — ကို ဖော်ပြရမယ်။

Steps to reproduce

Bug တစ်ခုအတွက် code နှင့် မရင်းနှီးတဲ့ လူတစ်ဦးပင် လိုက်လုပ်ပြီး ချို့ယွင်းချက်တူတူ တွေ့မြင်နိုင်လောက်အောင် နံပါတ်ခွဲပြီး တိကျတဲ့ steps to reproduce ကို ထည့်ပါ။

Environment

Operating system, browser ဒါမှမဟုတ် runtime version, dependency version — bug အများစုက အခြေအနေတိကျတဲ့အခါမှသာ ပေါ်ပါတယ်။

GitHub က ဒါအပေါ်မှာ organization layer တစ်ခုကို ထပ်ဖြည့်ပေးပါတယ်။

  • Labels — issue ကို တစ်ချက်ကြည့်ရုံနှင့် ခွဲခြားပြီး busy repository ကို လက်ရှိအရေးကြီးအရာအထိ filter လုပ်ခွင့်ပြုသည်
  • Assignees — ဘယ်သူတာဝန်ရှိလဲ မှတ်ပေးပြီး ထပ်ခါထပ်ခါ အလုပ်လုပ်မိခြင်းကို ရှောင်ရှားစေသည်
  • Milestones — ဆက်စပ် issue နှင့် pull request များကို deadline သို့မဟုတ် release တစ်ခုတည်းအတွက် စုစည်းပေးသည်

ဒါတွေထဲမှာ မည်သည့်တစ်ခုမျှ မဖြစ်မနေမလိုအပ်ပါဘူး၊ ဒါပေမယ့် contributor နှစ်ဦးထက်ပိုတဲ့ repository မှန်သမျှမှာ ဒါတွေက အလုပ်ကို track မလုပ်နိုင်တော့တာကို ကာကွယ်ပေးတဲ့ အရာတွေပါပဲ။

text
ISSUE LIFECYCLE
---------------
opened --> labeled/assigned --> in progress --> linked PR --> closed
  |              |                    |              |            |
title +      bug/enhancement     someone owns   "Closes #12"   merged PR
description   milestone set          it          in a commit   auto-closes

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

Issue ကို ကြည့်ခြင်း သို့မဟုတ် တင်ခြင်းက terminal ထဲမှာ လုံးဝ မဖြစ်ပေါ်ပါဘူး၊ ဒါပေမယ့် local Git နှင့် သိသာတဲ့ ချိတ်ဆက်မှုတစ်ခု သိထားထိုက်ပါတယ် — commit message များနှင့် pull request description များက issue ကို နံပါတ်ဖြင့် ရည်ညွှန်းနိုင်ပြီး Closes, Fixes, Resolves လို keyword တွေက ဆက်ဆံမှု ထူးခြားပါတယ်။

keyword တစ်ခု merge ဖြစ်သွားရင်

အဲဒီ keyword တစ်ခုပါတဲ့ pull request တစ်ခု merge ဖြစ်သွားရင် GitHub က ရည်ညွှန်းထားတဲ့ issue ကို အလိုအလျောက် ပိတ်ပေးပြီး ဘယ် commit နှင့် pull request က ဒါကို ဖြေရှင်းခဲ့လဲဆိုတာ link ပြန်ထားတဲ့ note တစ်ခု ချန်ခဲ့ပါတယ်။

ဒီ link က အမြဲတမ်း ရှိနေပြီး နောင်တွင် ရှာဖွေနိုင်ပါတယ်၊ ဒါကြောင့် issue number ကို commit history ထဲမှာ ရှာခြင်းက GitHub website အပြင်မှာတောင် တကယ်အသုံးဝင်တဲ့ အလေ့အထတစ်ခုပါ။

Issue ကိုယ်တိုင်ပေါ်မှာတော့ အပေါ်ဆုံးမှာ description ကို တွေ့ရမယ်၊ ဆက်ပြီး comment thread၊ sidebar မှာ label နှင့် assignee ကို ပြသထားပြီး၊ အလုပ်စတင်တာနှင့် linked pull request တစ်ခု အလိုအလျောက် ပေါ်လာမှာပါ။

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

bash
git init -q -b main
git config user.name "Thuta Learner"
git config user.email "learner@example.com"

cat > logger.js <<'EOF'
function log(value) {
  console.log(value.toUpperCase());
}
EOF
git add logger.js
GIT_AUTHOR_DATE="2026-01-01T09:00:00" GIT_COMMITTER_DATE="2026-01-01T09:00:00" \
  git commit -m "Add logger"

cat > logger.js <<'EOF'
function log(value) {
  if (value === undefined || value === null) return;
  console.log(value.toUpperCase());
}
EOF
git add logger.js
GIT_AUTHOR_DATE="2026-01-01T10:00:00" GIT_COMMITTER_DATE="2026-01-01T10:00:00" \
  git commit -m "Fixes #12: guard against undefined input in logger"

git log --oneline --grep="#12"
You should see
git log --oneline --grep="#12" ->
790939a Fixes #12: guard against undefined input in logger

GitHub ပေါ်မှာဆိုရင် commit ဒါမှမဟုတ် description ထဲမှာ 'Fixes #12' လို phrase ပါတဲ့ pull request တစ်ခု merge ဖြစ်သွားရင် issue #12 ကို အလိုအလျောက် ပိတ်ပေးပြီး ဘယ် commit နှင့် pull request က ဒါကို ဖြေရှင်းခဲ့လဲဆိုတာ note တစ်ခု issue ပေါ်မှာ ပေါ်လာပါလိမ့်မယ် — ဒါက GitHub web platform သီးသန့်ရဲ့ behavior ဖြစ်ပြီး git ကိုယ်တိုင် လုပ်ဆောင်တာ မဟုတ်ပါဘူး။

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

Bug တစ်ခုအတွက် Problem / Expected / Actual / Steps to reproduce / Environment ပုံစံအတိုင်း issue တစ်ခု ကိုယ်တိုင် ရေးကြည့်ပါ (GitHub ပေါ် တင်ရန် မလို — သင့် editor ထဲမှာပဲ ရေးကြည့်ပါ)။ ပြီးရင် 'Fixes #<number>' ပါတဲ့ commit message တစ်ခု ရေးပြီး git log --grep ဖြင့် ရှာဖွေကြည့်ပါ။

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

Steps to reproduce မပါဘဲ 'it doesn't work' လို issue ရေးခြင်း — maintainer တစ်ဦးက bug ကို ပြန်ဖန်တီးဖို့ ခန့်မှန်းရတော့ခြင်း

commit message ထဲမှာ 'Fixes #12' ကို typo ဒါမှမဟုတ် wrong number နှင့် ရေးမိပြီး GitHub က မှားယွင်းတဲ့ issue ကို auto-close လုပ်ခြင်း

GitHub Docs: Creating an issueGit & GitHub

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

  • Steps to reproduce မပါဘဲ 'it doesn't work' လို issue ရေးခြင်း — maintainer တစ်ဦးက bug ကို ပြန်ဖန်တီးဖို့ ခန့်မှန်းရတော့ခြင်း
  • commit message ထဲမှာ 'Fixes #12' ကို typo ဒါမှမဟုတ် wrong number နှင့် ရေးမိပြီး GitHub က မှားယွင်းတဲ့ issue ကို auto-close လုပ်ခြင်း
  • Destructive (သို့) history ပြောင်းလဲနိုင်တဲ့ command တိုင်းကို run မခင် git status နဲ့ လက်ရှိအခြေအနေကို အမြဲစစ်ပါ။

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

Bug တစ်ခုအတွက် Problem / Expected / Actual / Steps to reproduce / Environment ပုံစံအတိုင်း issue တစ်ခု ကိုယ်တိုင် ရေးကြည့်ပါ (GitHub ပေါ် တင်ရန် မလို — သင့် editor ထဲမှာပဲ ရေးကြည့်ပါ)။ ပြီးရင် 'Fixes #<number>' ပါတဲ့ commit message တစ်ခု ရေးပြီး git log --grep ဖြင့် ရှာဖွေကြည့်ပါ။

You'll know it worked when: git log --oneline --grep="#12" -> 790939a Fixes #12: guard against undefined input in logger GitHub ပေါ်မှာဆိုရင် commit ဒါမှမဟုတ် description ထဲမှာ 'Fixes #12' လို phrase ပါတဲ့ pull request တစ်ခု merge ဖြစ်သွားရင် issue #12 ကို အလိုအလျောက် ပိတ်ပေးပြီး ဘယ် commit နှင့် pull request က ဒါကို ဖြေရှင်းခဲ့လဲဆိုတာ note တစ်ခု issue ပေါ်မှာ ပေါ်လာပါလိမ့်မယ် — ဒါက GitHub web platform သီးသန့်ရဲ့ behavior ဖြစ်ပြီး git ကိုယ်တိုင် လုပ်ဆောင်တာ မဟုတ်ပါဘူး။

GitHub Issues နှင့် Project Tracking | Thuta Learning