Jan 7, 2017

Git၊ GitHub နှင့် SourceTree ဆိုတာဘာတွေလဲ။

Ko Sagaing
Git ဆိုတာ Project တစ်ခုမှာ ရေးသားထားတဲ့ Source Code တွေကို စိစစ်တည်းဖြတ်တဲ့အလုပ်ကို လုပ်နိုင်တဲ့ Software စနစ်တစ်ခုပဲ ဖြစ်ပါတယ်။ Version Control System (VCS) လို့လည်းခေါ်ကြတယ်။ Git ကို Software Development လုပ်သည့် အဖွဲ့အစည်းအများစု အသုံးပြုကြပြီး၊ စွမ်းဆောင်ရည်နှင့် လုံခြုံရေးပိုင်းဆိုင်ရာမှာ အခြားစနစ်တွေဖြစ်တဲ့ Apache Subversion (SVN), Concurrent Versions System (CVS) တို့နှင့်နှိုင်းယဉ်ရင် အားသာချက်တွေအများကြီးရှိတဲ့ Open Source စနစ်တစ်ခုဖြစ်တယ်။ သို့သော် Git မဟုတ်တဲ့ အခြားစနစ်ကို သုံးဖူးတဲ့သူက Git ကိုပြောင်းသုံးခဲ့ရင်၊ ဒါမှမဟုတ် Git ကို အခုမှ စသုံးတယ်ဆိုရင် အစပိုင်းမှာ အနည်းငယ်ခက်ကောင်း ခက်နိုင်ပါတယ် (ဂစ်!) :D ။ Development Team တစ်ခုမှာ Software တွေ Develop လုပ်ကြတဲ့အခါ၊ ဘယ် Developer တွေက Source Code ကို ဘယ်လိုတွေရေးခဲ့တယ်၊ Logic တွေမှားနေလား၊ မလိုအပ်တာတွေပါနေလား၊ Code Standard နှင့် ကိုက်ညီမှုရှိရဲ့လား၊ မရှိဘူးလား စတာတွေကို Git ကနေပြန်ကြည့်ပြီး Source Code တွေကို စိစစ်နိုင်တယ်၊ တည်းဖြတ်နိုင်တယ်။ Developer တစ်ယောက်ရေးထားတဲ့ Code နှင့် အခြား Developer တစ်ယောက်ရေးထားတဲ့ Code တွေကို ပေါင်းစည်းတဲ့အလုပ် (Merge) လုပ်နိုင်တယ်။ Developer တစ်ယောက်ရေးထားတဲ့ Code အချို့က အခြား Developer တစ်ယောက်အတွက် အသုံးဝင်နေခဲ့မယ်၊ ဒါမှမဟုတ် အခြား Project တစ်ခုအတွက် အသုံးဝင်နေခဲ့မယ်ဆိုရင် အဲ့ဒီ Code အချို့ကို လိုအပ်တဲ့နေရာအတွက် ရွေးချယ်၊ ပေါင်းထည့်နိုင်တဲ့အလုပ် (Cherry Pick) လုပ်နိုင်တယ်။ ဒီအလုပ်တွေလုပ်နိုင်ဖို့ Developer တွေက မိမိတို့ရေးပြီးတဲ့ Code တွေကို Git ထဲမှာ သိမ်းဆည်းတဲ့အလုပ် (Commit) လုပ်ခဲ့ဖို့လိုမယ်။  Commit လုပ်တယ်ဆိုတာ Local Repository ထဲမှာ သိမ်းဆည်းတဲ့ အလုပ်ကို လုပ်တာဖြစ်ပါတယ်။ Repository ဆိုတာ မိမိလက်ရှိ အလုပ်လုပ်နေတဲ့ Project က File တွေ၊ Folder တွေနှင့်အတူ ဘယ်ဖိုင်ရဲ့ Source Code တွေမှာ၊ ဘာတွေ ပြင်ခဲ့တယ်၊ ဖျက်ခဲ့တယ်၊ လုပ်ခဲ့တယ် စတဲ့ လုပ်ဆောင်ချက်တွေကိုပါ သိမ်းဆည်းပေးထားတဲ့ နေရာတစ်ခုကို ပြောတာဖြစ်ပါတယ်။  Commit လုပ်ပြီးရင် Push လုပ်ရတယ်။  Push လုပ်တယ်ဆိုတာက Local Repository မှာလုပ်ထားတဲ့အတိုင်း Remote Repository မှာပါ လုပ်ခိုင်းတဲ့ သဘောကို ပြောတာဖြစ်ပါတယ်။  Remote Repository ဆိုတာ Server ထဲမှာရှိတဲ့ Repository ကိုပြောတာဖြစ်ပါတယ်။ ဒါတွေက Git အသုံးပြုတဲ့အခါမှာ အခြေခံအားဖြင့် ကြုံတွေ့ရမယ့် အခေါ်အဝေါ်အချို့ ဖြစ်ပါတယ်။ ပုံမှန်အားဖြင့် Git မှာ အဲ့ဒီအလုပ်တွေ လုပ်ဆောင်နိုင်ဖို့ ငြီးငွေ့ဖွယ်ကောင်းတဲ့ Command Line တွေဖြင့်သာ အသုံးပြုနိုင်ပါတယ်။ တချို့ Developer တွေက Command Line အသုံးပြုရတာကို သဘောကျ၊ နှစ်သက်လေ့ ရှိပါတယ်။  Command Line နှင့် Git ကိုဘယ်လို အသုံးပြုတာလည်းဆိုတာ နမူနာအနေနှင့် ဒီမှာ လေ့လာနိုင်ပါတယ်။  အဲ့ဒါကိုလေ့လာပြီးသွားရင် Git အခြေခံသဘောတရား နားလည်သွားပါလိမ့်မယ်။  အသေးစိတ်ကို လေ့လာချင်ရင်တော့ ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။ Git ကို Install လုပ်ချင်ရင် ဒီနေရာက Download ချလို့ရပါတယ်။ Git ကို Command Lin အနေနှင့် အသုံးမပြုချင်ဘူးဆိုရင် Git GUI (Graphical User Interface) Client တွေနှင့် အသုံးပြုနိုင်ပါတယ်။ Git GUI တွေကို ဒီနေရာ မှာ Download ချနိုင်ပါတယ်။  တချို့ GUI တွေကတွေက ပိုက်ဆံပေးရပြီး၊ တချို့ကတော့ Free ဖြစ်ပါတယ်။

GitHub ဆိုတာဘာလည်း။

GitHub ဆိုတာ Git Repository တွေကို Hosting လုပ်ပေးတဲ့ Website တစ်ခုဖြစ်ပြီး၊ Repository တွေကို Management လုပ်တဲ့စနစ်တစ်ခုဖြစ်ပါတယ်။ Open Source (သို့) Public Project တွေအတွက် Code Hosting ကို Free အသုံးပြုနိုင်ပြီး၊ Private Project တွေအတွက်ကိုတော့ အနည်းဆုံး ၁လကို ၇ဒေါ်လာမှ စပြီးပေးချေရပါတယ်။  GitHub ထဲက အခြားသူတွေရဲ့ Open Source Project တွေမှာ Register လုပ်ပြီး ပါဝင်ကူညီ အားဖြည့်ပေးနိုင်ပါတယ်။  GitHub မှာ GitHub Desktop ဆိုတာရှိပါတယ်။  အဲ့ဒီ GitHub Desktop ကသုံးရတာရိုးရှင်း၊ လွယ်ကူတဲ့ Git GUI Client တစ်ခုဖြစ်ပါတယ်။  ဒီနေရာမှာ Download ချနိုင်ပါတယ်။  အကယ်၍ မိမိမှာရှိတဲ့ Project တစ်ခုကို Public Project အနေနှင့် GitHub ထဲမှာ Hosting လုပ်ထားချင်တယ်ဆိုရင်၊ အောက်ပါအတိုင်း အဆင့်ဆင့် လုပ်ဆောင်ရပါမယ်။

၁) GitHub မှာ Account Register လုပ်ပါ။
၂) ပြီးရင် GitHub Desktop ကို Download ချပြီး မိမိစက်ထဲမှာ Install လုပ်ပါ။
၃) Install လုပ်ပြီးလို့ GitHub Client ကိုဖွင့်လိုက်ရင် GitHub Account နှင့် Login လုပ်ပေးပါ။  Login လုပ်လိုက်ရင် GitHub ကနေ အောက်ပါ နမူနာ Message ပါတဲ့ Email တစ်ခုပို့ပေးပါလိမ့်မယ်။  အဲ့ဒါက Secure Socket Shell Key နှင့် ပတ်သက်တဲ့ အချက်အလက်တွေဖြစ်ပါတယ်။  မိမိစက်ထဲက File တွေကို GitHub ထဲ Upload လုပ်တဲ့အခါမှာ Secure ဖြစ်အောင်လုပ်ပေးတဲ့ Key တစ်ခုဖြစ်ပါတယ်။

The following SSH key was added to your account:

GitHub Desktop - DESKTOP-GFEQ3ER
6b:c0:b9:23:f5:a8:51:a7:e9:1b:e8:f8:37:90:01:5d

If you believe this key was added in error, you can remove the key and disable
access at the following location:

https://github.com/settings/keys

၄) Login လုပ်ပြီးသွားရင် Project Repository တစ်ခုထည့်ဖို့ရန်အတွက်၊  အောက်ပါအတိုင်း မြင်တွေ့ရလိမ့်မယ်။
မိမိစက်ထဲမှာရှိတဲ့ Project ကို Repository အဖြစ် Git ထဲမှာထည့်ချင်ရင် Add နှင့်ထည့်တယ်။  ဒါမှမဟုတ် သီးသန့် Repository တစ်ခုသတ်မှတ်ပြီး၊ နောက်မှ Project ထည့်မယ်ဆိုရင် Create နှင့်သတ်မှတ်တယ်။နောက်တစ်ခုက မိမိရဲ့ GitHub Account ထဲက Repository ကို Desktop ထဲမှာ Clone အနေနှင့်လှမ်းယူပြီး၊ သိမ်းဆည်းတာဖြစ်တယ်။ Git မှာ Repository တစ်ခုသတ်မှတ်ပြီးရင် သူ့အောက်မှာ Branch တွေထပ်ခွဲလို့ရပါတယ်။  Master က Default Branch ဖြစ်ပြီး၊ Project တစ်ခုမှာ Feature အသစ်တွေထည့်မယ်ဆိုရင် Branch ခွဲမယ်၊ ပြီးရင်အဲ့ဒီ Branch မှာ Develop လုပ်မယ်၊ ပြီးရင် Master Branch ထဲကို Merge လုပ်မယ် စသည်ဖြင့် လုပ်ဆောင်နိုင်ပါတယ်။ နောက်တစ်ပုံက Visual Studio ထဲမှာ Code ကိုပြင်လိုက်တယ်၊ အဲ့ဒါကြောင့် Project Repository မှာ Code ကိုပြင်ထားတဲ့အခြေအနေကို မြင်ရတာဖြစ်ပါတယ်။ ပြင်ထားပေမယ့်လည်း Commit မလုပ်ရသေးတဲ့ အခြေအနေဖြစ်ပါတယ်။

ပြင်ထားတဲ့ Code မှာ အနီရောင်က ပြင်လိုက်တဲ့ Line ဖြစ်ပြီး အစိမ်းရောင်က ဘာကို၊ ဘယ်လိုပြင်လိုက်တာလည်းဆိုတာပြတာဖြစ်တယ်။  အကယ်၍ Developer အနေနှင့် Commit လုပ်မယ်ဆိုရင် Summary နှင့် Description မှာ ဘာကြောင့်ပြင်တယ်၊ ဘာအတွက်ပြင်တယ်၊ စသည့် အကြောင်းအရာတွေကို ရေးပြီး အဲ့ဒီအောက်က Commit to Version 1.0 ကို Click နှိပ်ပြီး Commit လုပ်ရမှာဖြစ်ပါတယ်။  Version 1.0 ဆိုတာ Master Branch ကနေ သီးသန့်ခွဲထုတ်ထားတဲ့ Branch တစ်ခုဖြစ်ပါတယ်။  Commit လုပ်ပြီးသွားရင် Branch နှစ်ခုရဲ့ ခြားနားချက်ကို အောက်မှာပြထားတဲ့ နေရာကနေ History ထဲမှာကြည့်နိုင်ပါတယ်။

နောက်ပြီးမိမိဖွင့်ချင်တဲ့ Branch ကိုရွေးပြီး Visual Studio ကို Click နှိပ်ပြီးဖွင့်လို့ရပါတယ်။ Developer တွေအနေနှင့် Unit Testing လုပ်ပြီးမှသာလျှင် Commit လုပ်လေ့ရှိပါတယ်။ Commit လုပ်ပြီးမှ Error တစ်ခုခုတွေ့လို့ပဲဖြစ်ဖြစ်၊ အကြောင်းတစ်ခုခုကြောင့်ပဲဖြစ်ဖြစ် အဲ့ဒီ Commit လုပ်ထားတာကို Cancel လုပ်လို့ရပါတယ်။  Cancel လုပ်တာကို Revert လို့ခေါ်ပါတယ်။  အကယ်၍  GitHub ရဲ့ Remote Repository ထဲကို ပို့ချင်တယ်ဆိုရင် Publish လုပ်ပေးရပါတယ်။  Git ကို Command Line အနေနှင့်အသုံးပြုချင်တယ်ဆိုရင် Settings ထဲက Open in Git Shell မှာ အသုံးပြုနိုင်ပါတယ်။ အောက်ကပုံကတော့ Git Shell Window ပုံ ဖြစ်ပါတယ်။  ဒါတွေကတော့ GitHub နှင့် GitHub GUI Client ရဲ့ အခြေခံ အသုံးပြုပုံတွေဖြစ်ပါတယ်။

SourceTree ဆိုတာဘာလည်း။
Git GUI တွေထဲမှာ SourceTree ဆိုတာ Free Git GUI Client Software တစ်ခုဖြစ်ပြီး ကျွန်တော်လည်း လက်ရှိအသုံးပြုနေပါတယ်။ SourceTree ဟာ GitHub Desktop နှင့် နှိုင်းယှဉ်မယ်ဆိုရင် လုပ်ဆောင်ချက်တွေပိုမိုပါဝင်ပြီး၊ Git Command Line အသုံးပြုမှုနည်းအောင် ဖန်တီးထားတဲ့ Git GUI Client တစ်ခုဖြစ်ပါတယ်။  GitHub မှာ Hosting လုပ်ထားတဲ့ Repository ကို  SourceTree ကနေ Clone Repository လုပ်ပြီးအသုံးပြုနိုင်ပါတယ်။  SourceTree ကို Enterprise Software တွေထုတ်တဲ့ Atlassian ကုမ္ပဏီက ဖန်တီးထားတာဖြစ်ပြီး၊ အခြားနာမည်ကြီးတဲ့နောက်ထပ် Product တစ်ခုက JIRA ပဲဖြစ်ပါတယ်။  JIRA ဆိုတာ Project Management စနစ်တစ်ခုဖြစ်ပြီး၊ Agile ပုံစံဖြင့် Software Development လုပ်တဲ့ ကုမ္ပဏီတွေ အသုံးပြုပါတယ်။ JIRA ကိုအသုံးပြုဖို့ တစ်လကို အနည်းဆုံး ၁၀ ဒေါ်လာဖြင့် User ၁၀ ယောက်ထိ အသုံးပြုနိုင်တဲ့ Plan ကစပြီးရှိပါတယ်။  Atlasian မှာ GitHub ကဲ့သို့သော Git Repository တွေကို Hosting လုပ်ပေးတဲ့ စနစ်ရှိပါတယ်။ အဲ့ဒီ စနစ်ကို Bitbucket လို့ခေါ်ပါတယ်။  Bitbucket ကို အသုံးပြုမယ်ဆိုရင် User ၅ယောက်အထိကို Free သုံးခွင့်ပြုထားပြီး၊ ၅ယောက်အထက်ဆိုရင်တော့ တစ်လကို ၁၀ဒေါ်လာ ကျသင့်မှာဖြစ်ပါတယ်။  Bitbucket ကိုအသုံးပြုမယ်ဆိုရင် ဒီနေရာမှာ Register လုပ်ပြီး SourceTree Client ကနေအသုံးပြုလို့ရပါတယ်။ SourceTree ကိုအသုံးပြုဖို့ အရင်ဆုံး ဒီနေရာက Download ချပြီး Install လုပ်ရပါမယ်။ (မှတ်ချက်။ အကယ်၍ မိမိစက်ထဲမှာ Git ကိုသီးသန့် Install လုပ်ထားပြီးသား ဖြစ်နေခဲ့မယ်ဆိုရင်၊ အဲ့ဒီ Git ကို SourceTree မှာပြန်သုံးလို့ရပါတယ်။  အဲ့ဒီလို ပြန်သုံးချင်တယ်ဆိုရင် Tools ရဲ့ Options ထဲမှာ Git ဆိုတဲ့ Tab ရှိတယ်။  အဲ့ဒီမှာ Embedded Git လား System Git လားဆိုတာ ရွေးပေးရမှာဖြစ်ပါတယ်။) အကယ်၍ GitHub က Repository ကို SourceTree Client မှာအသုံးပြုချင်တယ်ဆိုရင်၊ အောက်ပါအတိုင်း အဆင့်ဆင့် လုပ်ဆောင်ရပါမယ်။

၁) Clone / New ကို Click နှိပ်ပါ အောက်ဖေါ်ပြပါ အတိုင်းထွက်လာပါလိမ့်မယ်။
ဒီ Window ရဲ့ လုပ်ဆောင်ချက်တွေက GitHub Desktop Window နှင့်တူပါတယ်။
၂) Clone Repository ကိုရွေးထားပြီး၊ Source Path / URL မှာ GitHub ထဲက Repository ရဲ့ URL ကိုထည့်ပေးရမှာဖြစ်ပါတယ်။  အဲ့ဒီ URL ကိုရဖို့ GitHub ထဲကို Login လုပ်ရမယ်။ ပြီးရင် Repository တစ်ခုကိုရွေးလိုက်ရင် အောက်ပါအတိုင်း မြင်တွေ့ရပါလိမ့်မယ်။

Repository ထဲမှာ HTTPS နှင့် SSH ဆိုပြီး ၂ခု တွေ့လိမ့်မယ်။  SSH ကိုသုံးမယ်ဆိုရင် အနည်းငယ်အလုပ်ရှုပ်တဲ့အတွက် HTTPS ကိုပဲသုံးလိုက်မယ်။  အဲ့ဒီတော့ HTTPS URL ကို Copy ကူးပြီး SourceTree ထဲကို ထည့်လိုက်မယ်။  ပြီးရင် Clone ကို Click နှိပ်လိုက်ရင် Local Repository တစ်ခုစက်ထဲကို ရောက်လာလိမ့်မယ်။

အဲ့ဒီ Repository မှာ GitHub Desktop ကဲ့သို့ပဲ Master Branch ကို အလိုလျှောက် ဖန်တီးထားပေးလိမ့်မယ်။ Branch တစ်ခုထပ်ခွဲချင်ရင် Branch ကိုသွားပြီး Branch Name ပေးမယ်၊ ပြီးရင် Create Branch ကို Click နှိပ်လိုက်ရင် Branch တစ်ခုရလာပါလိမ့်မယ်။  Branch ၂ခုခွဲထားပုံကို အောက်ပါအတိုင်း SourceTree မှာမြင်တွေ့ရမှာ ဖြစ်ပါတယ်။  လက်ရှိရွေးချယ်ထားတဲ့ Branch က Version 1.0 ဆိုတဲ့ Branch ဖြစ်ပါတယ်။
အကယ်၍ Visual Studio ထဲမှာ Code အချို့ကို ပြင်လိုက်တယ်ဆိုရင် အောက်ပါအတိုင်း မြင်တွေ့ရမှာဖြစ်ပါတယ်။ ဒါကတော့ Commit မလုပ်ခင် အခြေအနေဖြစ်ပါတယ်။
Commit လုပ်မယ်ဆိုရင် Stage All ကို Click နှိပ်ပြီး၊ အောက်မှာ ဘာကြောင့်ပြင်တယ်ဆိုတာ ထည့်မယ်၊ ပြီးတာနှင့် Commit လုပ်လိုက်မယ်။  ပြီးရင် Log/History ထဲဝင်ကြည့်ရင် အောက်ပါအတိုင်း မြင်တွေ့ရပါလိမ့်မယ်။
ဒီအဆင့်ထိက Local Repository ထဲမှာပဲ ရှိပါသေးတယ်။  အဲ့ဒီတော့ Remote Repository ထဲကို ထည့်ချင်တယ်ဆိုရင် Push လုပ်ပေးရမယ်။  Push ကို နှိပ်လိုက်ရင် အောက်ပါအတိုင်း မြင်တွေ့ရပါလိမ့်မယ်။
ပြီးရင် Push လုပ်ချင်တဲ့ Branch ကိုရွေးပြီး Push ကို Click နှိပ်ရပါမယ်။  အဲ့ဒါတွေပြီးသွားရင်တော့ Remote Repository ဖြစ်တဲ့ GitHub ထဲက Repository နှင့် Local Repository အတူတူဖြစ်သွားပါလိမ့်မယ်။ GitHub ထဲမှာ Login လုပ်ပြီး၊ ဝင်ကြည့်ရင် အောက်ပါအတိုင်း မြင်တွေ့ရပါလိမ့်မယ်။
Branch ၂ခုရှိမယ်။  အဲ့ဒီ Branch နှစ်ခုကို Compare & Pull Request လုပ်ကြည့်မယ်ဆိုရင် အောက်ပါအတိုင်း တွေ့ရမှာဖြစ်တယ်။
Files Changed ကိုဝင်ကြည့်ရင် ဘယ်ဖိုင်မှာ ဘာတွေပြင်ထားတယ်ဆိုတာ တွေ့ရပါလိမ့်မယ်။  ဒီ Post ကိုဖတ်ပြီး၊ Git နှင့် GUI Client တွေရဲ့ လုပ်ဆောင်ချက်ကို အခြေခံနားလည်သဘောပေါက်မယ်လို့ ယူဆပါတယ်။

မှတ်စုရေးသူအကြောင်း

Ko Sagaing / Software Engineer

နာမည်အရင်းမှာ လှိုင်မင်းထက်ဖြစ်ပြီး၊ ကိုစစ်ကိုင်းဆိုသည့် နာမည်ပြောင်နှင့် မိတ်ဆွေ၊ သူငယ်ချင်းများက ရင်းနှီးစွာခေါ်ကြပါသည်။ ယခင်ကမြန်မာနိုင်ငံတွင် သင်ကြားရေး နှင့် Software Development လုပ်ငန်းများတွင် ဝင်ရောက်လုပ်ကိုင်ခဲ့ပြီး၊ ယခုလက်ရှိမှာ စင်ကာပူနိုင်ငံရှိ နည်းပညာကုမ္ပဏီတစ်ခုတွင် ဝင်ရောက်လုပ်ကိုင်နေပါသည်။

0 ခုမှတ်ချက်ပေးထားတယ်။:

Post a Comment

ကိုစစ်ကိုင်း၏ မှတ်စုများ. Powered by Blogger.