Git Basic Guide

git အခြေခံ အသုံပြုနည်း
ရေးသားသူ : saturngod

Git ကို သုံးဖို့အတွက် ပထမဆုံး စက်ထဲမှာ git မရှိရင် download ချဖို့လိုပါတယ်။

Download ချပြီးပြီဆိုရင်တော့ command line (terminal) မှာ စပြီးတော့ git ကို အသုံးပြုလို့ရပြီ။

Git ကို သုံးဖို့အတွက် git repo လိုအပ်တယ်။ Git repo ကို bitbucket , github စတာတွေမှာ ဖန်တီးလို့ရသလို ကိုယ်ပိုင် network , ကိုယ့်စက်ထဲမှာလည်း repo လွယ်လင့် တကူဖန်တီးလို့ရတယ်။

Setup Git repo host in local

Git ကို github , bitbucket တို့မှာ host မလုပ်ပဲ ကိုယ့်စက်ထဲမှာပဲ host လုပ်ချင်တယ်ဆိုရင်တော့

mkdir /opt/git
mkdir /opt/git/gitProject.git
cd /opt/git/gitProject.git
git --bare init

ဒါဆိုရင် ကျွန်တော်တို့တွေရဲ့ /opt/git/gitProject.git က git repo host ဖြစ်နေပါပြီ။

Create a new git repo

Git repo တစ်ခု ဖန်တီးရတာ လွယ်ပါတယ်။

git init

ဆိုပြီး စတင်ရပါမယ်။

ဥပမာ။

cd ~/Projects/myprojectDir/
git init

ပြီးရင်တော့ ကျွန်တော်တို့တွေ remote ကို ထည့်ပေးရမယ်။

git remote add origin /opt/git/gitProject.git

ဒါမှမဟုတ် Github က ဆိုရင်တော့

git remote add origin git@github.com:myusername/myrepo.git

remote add ဆိုတာကတော့ remote url ထည့်မယ်ဆိုတာပါ။ origin ကတော့ နာမည်ပါ။ အခြားနာမည်တွေ ပေးလည်းရပါတယ်။ git တစ်ခုမှာ remote တစ်ခုမက ထည့်သွင်းလို့ရပါတယ်။ Github ကို အသုံးပြုတဲ့အခါ Fork လုပ်ပြီးတော့ မူရင်း repo ကနေ pull ပြန်လုပ်ဖို့အတွက် remote branch တွေ တစ်ခုမက ထည့်သွင်းရပါတယ်။

Add And Commit

အသစ်ထည့်ထားတဲ့ file တွေ ကို git ပေါ်ကို တင်မယ်ဆိုရင်တော့

git add <filename>

အကုန်လုံး ကို ထည့်မယ်ဆိုရင်တော့

git add *

Add နဲ့ remove လုပ်မယ်ဆိုရင်တော

git add -u

ပြီးရင်တော့

git commit -m "Commit message"

ဒါဆိုရင်တော့ head (git commit ရဲ့ လက်ရှိနေရာ) ထဲမှာ Commit message နဲ့ ရောက်သွားပြီ။ git repo host ပေါ်ကို push လုပ်ဖို့တာ လိုတော့တယ်။

Pushing changes

ကျွန်တော်တို့ အပေါ်မှာ remote ကို origin ဆိုပြီးတော့ နာမည်ပေးခဲ့ပါတယ်။

git push origin master

Origin က master branch ဆီကို push လုပ်လိုက်တာပါ။ branch တွေက master အပြင် မိမိ စိတ်ကြိုက် branch တွေ ခွဲထုတ်လို့ရပါတယ်။ ပြီး branch အခြင်းခြင်း merge လုပ်လို့ရပါတယ်။

Git log ကို အသုံးပြုပြီးတော့ ဘာ

git log

Branching

လက်ရှိ branch ကနေ feature အသစ် တစ်ခု ထပ်ဖြည့်မယ်ဆိုရင်တော့ feature branch တစ်ခု ထပ်ခွဲပြီးတော့ နောက်ပိုင်း အကုန်လုပ်ပြီးမှ master branch ကို ထပ်ပေါင်းပါတယ်။

feature_x branch ဖန်တီးချင်ရင်

git checkout -b feature_x

master branch ကို ပြန်ပြောင်းချင်ရင်

git checkout master

feature_x branch ကို ဖျက်ချင်ရင်

git branch -d feature_x

သက်ဆိုင်ရာ branch ကို push လုပ်ချင်ရင်

git push origin <branch>

update & merge

update လုပ်မယ်ဆိုရင် အခြားလူတွေ တင်ထားတာတွေ ရှိသလား ။ ရှိရင် merge လုပ်ဖို့အတွက် push မလုပ်ခင်မှာ pull လုပ်ရပါတယ်။

git pull

git server က fetch လုပ်ပြီးတော့ merge လုပ်ပါတယ်။ ဒါမှမဟုတ် branch တွေကို merge လုပ်ချင်တယ်ဆိုရင်

git merge <branch>

အထက်ပါ ၂ ခုလုံးက အလိုအလျောက် merge လုပ်ပေးပါတယ်။ သို့ပေမယ့် ကံမကောင်းရင်တော့ conflict ဖြစ်တတ်ပါတယ်။ conflict ကို ဖြေရှင်းဖို့ mac မှာ ဆိုရင် file merge နဲ့ တွဲပြီး အသုံးပြုနိုင်ပါတယ်။

merge မလုပ်ခင်မှာ different ကို ယဉ်ကြည့်လို့ရပါတယ်။

git diff <source_branch> <target_branch>

Tagging

version ၁ ခု ကို release လုပ်ပြီးသွားတိုင်း ကျွန်တော်တို့တွေ tag လုပ်ခဲ့ပါတယ်။ tag ကို လုပ်ပေးဖို့လည်း ကျွန်တော် အကြံပြုချင်ပါတယ်။ tag လုပ်ခြင်းအားဖြင့် github , bitbucket တို့မှာ လွယ်လင့်တကူ source code ကို tag version နဲ့ ပြန် download ချနိုင်ပါတယ်။

git tag -a v1.4 -m 'my version 1.4'

ထည့်ထားတဲ့ tag တွေကို ပြန်ကြည့်ချင်ရင်တော့

git tag

ပြီးရင်တော့ remote ကို ပြန်ပြီးတော့ တင်ပေးရပါတယ်။

git push origin --tags

Replace local changes

ကျွန်တော်တို့ အရင် commit လုပ်ထားတဲ့ နေရာကို ပြန်သွားချင်တယ် ဆိုရင်တော့ ကျွန်တော်တို့တွေ checkout ပြန်လုပ်ဖို့လိုပါတယ်။ ပြန်သွားဖို့ အတွက် commit နံပတ် ကို သိဖို့လိုပါတယ်။ commit ကို log နဲ့ ပြန်ကြည့်လို့ရပါတယ်။

git checkout <commit> <file>

တကယ်လို့ file တစ်ခုတည်း မဟုတ်ပဲ အကုန်လုံးကို ပြန်သွားမယ်ဆိုရင်တော့

git checkout <commit>

ဥပမာ ။။

$ git log --oneline
b7119f2 Continue doing crazy things
872fa7e Try something crazy
a1e8fb5 Make some important changes to hello.py
435b61d Create hello.py
9773e52 Initial import

hello.py ရှိတဲ့ နေရာကို ပြန်သွားမယ်ဖြစ်တဲ့ အတွက်ကြောင့်

$ git checkout a1e8fb5

အဲဒါဆိုရင် a1e8fb5 stage ကို ရောက်နေပါပြီ။ current stage မှာ မဟုတ်ပါဘူး။ file ကြည့်ပြီးတော့ လက်ရှိ master branch ကိုပဲ ပြန်သွားမယ်ဆိုရင်တော့

$ git checkout master

ဒါဆိုရင် current branch ကို ပြန်ရောက်ပါပြီ။

git checkout a1e8fb5 hello.py

ဆိုရင် a1e8fb5 က hello.py ကို ပြန်ခေါ်တာပါ။ ပြီးရင် HEAD က hello.py ကို ပြန်ခေါ်သုံးချင်ရင်တော့

git checkout HEAD hello.py

UI App for Git

ကျွန်တော်ကတော့ git အတွက် source tree ကို အသုံးပြုပါတယ်။ Free ဖြစ်ပြီးတော့ သုံးရတာ အဆင်ပြေပါတယ်။ Windows အတွက်ကော mac အတွက်ပါ ရပါတယ်။

Other Guide

Atlassian ရဲ့ Git Guide က အတော်လေးကို အသုံးဝင်ပါတယ်။

နောက်ပြီး Github ရဲ့ try.github.io က interactive ဖြစ်တဲ့ အတွက် လက်တွေ့ နားလည် သဘောပေါက်စေနိုင်ပါတယ်။