ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Team တစ်ခုနဲ့ အလုပ်လုပ်တဲ့အခါ file တစ်ခုတည်းကို နှစ်ယောက်ပြင်မိရင် merge conflict ဖြစ်လေ့ရှိပါတယ်။ ဒီအပိုင်းမှာ GitHub ပေါ်က README.md ကို တိုက်ရိုက် edit လုပ်ပြီး, local မှာလည်း README.md ကို ပြင်ကာ conflict တစ်ခု တမင်ဖန်တီးပြီး ဖြေရှင်းနည်းကို practice လုပ်ကြမယ်။ ထို့အပြင် commit တစ်ခု မှားယွင်းသွားရင် git reset ဖြင့် ပြန်ပြင်တတ်ရေးနှင့်, project ကို final push ဖြင့် ပြီးမြောက်အောင် ပိတ်သိမ်းနည်းကိုလည်း လေ့လာကြမယ်။
လက်တွေ့ ဆောက်ကြည့်မယ်
GitHub ပေါ်ကနေ README.md file ကို web interface ဖြင့် တိုက်ရိုက် edit လုပ်ပြီး commit လုပ်ပါ။ local repository မှာလည်း README.md ကို တစ်ခြား line တစ်ကြောင်းနဲ့ ပြင်ပြီး commit လုပ်ပါ။ git pull လုပ်တဲ့အခါ conflict ဖြစ်လာမည်ဖြစ်၍, conflict markers များကို ဖွင့်ကြည့်ပြီး ဘယ်အပိုင်းထားမလဲ ရွေးချယ်ပြီး ဖြေရှင်းပါ။ ပြီးရင် test အနေနဲ့ commit တစ်ခုကို 'typo commit' အဖြစ်ဖန်တီးပြီး git reset --soft HEAD~1 ဖြင့် undo လုပ်ကြည့်ပါ။ နောက်ဆုံးမှာ .gitignore ကို double-check လုပ်ပြီး git push ဖြင့် project ကို final ပြီးမြောက်အောင် ပိတ်ပါ။
Code နမူနာ
# Step 1: local မှာ README.md ကို ပြင်ပြီး commit လုပ်ပါ (GitHub ပေါ်ကလည်း တစ်ပြိုင်နက်တည်း ပြင်ထားသည်ဟု ယူဆပါ)
git add README.md
git commit -m "Update README with contact info"
# Step 2: pull လုပ်တဲ့အခါ conflict ဖြစ်လာမည်
git pull origin main
# CONFLICT (content): Merge conflict in README.md
# Step 3: README.md ကိုဖွင့်ကြည့်ပါ
# <<<<<<< HEAD
# (your local changes)
# =======
# (GitHub's changes)
# >>>>>>> origin/main
# -> လိုချင်သော content ကို ရွေးပြီး markers များကို ဖျက်ပါ
git add README.md
git commit -m "Resolve merge conflict in README"
# Step 4: မှားယွင်းသွားသော commit တစ်ခုကို reset ဖြင့် undo
git commit -m "typo commit" --allow-empty
git reset --soft HEAD~1
# Step 5: final push
git push origin mainConflict ကို ဖြေရှင်းပြီးနောက် GitHub ပေါ်မှာ clean commit history နှင့် README.md content မှန်ကန်စွာ ပေါ်လာပြီး, project repository တစ်ခုလုံး push ပြီးစီးမည်။၅ မိနစ် စမ်းကြည့်
index.html ထဲမှာလည်း local နှင့် GitHub web editor နှစ်ဖက်ကနေ တစ်ချိန်တည်း edit လုပ်ပြီး conflict တစ်ခု ထပ်ဖန်တီးကာ ဖြေရှင်းကြည့်ပါ (5 မိနစ်).
သတိလေးတစ်ချက်
git reset --hard သည် working directory ထဲက uncommitted changes များကိုပါ အပြီးဖျက်ပစ်နိုင်သောကြောင့် အသုံးပြုခင် git status ဖြင့် အရင်စစ်ဆေးပြီး သေချာမှသာ run ပါ။