මොකද්ද Git කියන්නේ
අද වන විට ලෝකයේ බහුලව භාවිතා වන modern version control system ලෙස හදුන්වන්නේ Git ය. වාණිජ ව්යාපෘති මෙන්ම මෘදුකාංග ව්යාපෘති විශාල ප්රමාණයක් Git මත රදා පවතී. බොහොමයක් programming කරන පිරිස වර්තමානයේ දිනපතා git සමග ක්රියා කරයි.
version control යනු,
සරලව ගතහොත් documents, computer programmers, විශාල වෙබ් අඩවි සහ අනෙකුත් තොරතුරු එකතුවල වෙනස්කම් කළමනාකරණය කිරිමයි.
මූලික වශයෙන් programmer කෙනෙක් ලෙස initial version code එක save කරනු ලැබේ පසුව අප code එක තුල සිදු කරන සියළුම update නැවත නැවත git තුල සුරැකිව තබාගත හැක. Code එකක් නිතරම වෙනස්කම් සිදු කරන බැවින් අප විසින් සිදු කරන ලද සියලුම වෙනස්කම් දෙස ආපසු බැලිය හැක.
Terms
Directory – Folder
Terminal
CLI
Commands
Repository
GitHub
බොහෝ අයට ඇති ගැටළුවක් වන්නේ Git හා GitHub අතර ඇති වෙනස පිළිබදවයි
Git යනු
- ඔබේ code එකේ සියළුම වෙනස්කම් නිරික්ෂණය කෙරෙන tool එකයි.
GitHub යනු
- ඔබගේ සියළුම git ක්රියාකාරකම් online host සේවාව සපයන වෙබ් අඩවියකි. එමගින් පුද්ගලයන් හා සමග කණ්ඩායම් වශයෙන් වැඩ කිරිම පහසු කරයි.
Git භාවිතා කිරිමේදි අවශ්ය වන ප්රධාන command කිහිපයක් ඇත.
GitHub, bitbucket වැනි website එකක repository කර ඇති අපගේ folder එකක් local machine එකකට copy කර ගැනීමට භාවිතා කරයි.
ඔබ ඔබේ පරිගණකයේ සිදුකල ඇති වෙනස්කම් මොනවාද යන්න git status command එක තුලින් බැලීමට හැකියාව වෙනස්කම් කර ඇති file රතු පැහැයෙන් දැක්වේ.
Eg :- modified: index.html
ඔබ සතුව local machine එකේ update කරපු file එකක් හෝ create, delete වැනි යම් ක්රියාකාරකමක් කරන ලද folder එකක් තිබේනම් එම වෙනස්කම් නිරික්ෂණය කිරිමට git වෙත add විධානය ලබා දෙනු ලැබේ.
Eg :- git add index.html
සරලව ගත් විට git එක තුල save කිරිමයි. මෙහිදි commit කල පසු සිදු කරනු ලැබූ වෙනස පිළිබද පොඩි සටහනක් දැමිය යුතු වේ.
Eg :- git commit -a
ඔබේ පරිගණකයේ සිදුකරන ලද වෙනස්කම් GitHub වැනි website එකකට upload කිරිමයි. එය git තුල commit විධානය හරහා නිරික්ෂණය කල හැකිය.
Eg :- git push origin master
Remote repo, එක තුල ඇති වෙනස්කම් ඔබගේ පරිගණකය තුලට ලබා ගැනීමයි push හි ප්රතිවිරුද්ධ ක්රියාවලියයි. GitHub හි ඔබේ code එකට අදාල වෙනස්කම් ඇති විට සහ ඒවා ඔබගේ local machine එකට ගෙන ඒමට
අවශ්ය වූ විට pull විධානය භාවිතා කල හැකිය.
Eg :- git pull origin master
ඔබට අවශ්ය යම් වෙනත් file එකක් හෝ folder එකක් සොයා ගැනීමට අවශ්ය නම් මෙම විධානය ක්රියාත්මක කිරිමෙන් සොයාගත හැකිය.
උදාහරණ :- ඔබට වර්තමානයේ සිදුකරන project එකකට අමතරව පෙර සිදුකල project එකක් බැලීමය අවශ්ය අවශ්ය නම් මෙම command එක මගින් ඔබ පරිගණකයේ ඇති සියළුම project පෙන්වනු ලැබේ.
Git hub workflow
1. Write code
2. Commit changes
3. Make a pull request
Local git workflow
1. write code
2. stage change – git add
3. commit changes – git commit
4. Make a pull request - git pull
5. Push changes – git push
Git Branching
ශාඛා කිරිම (Branching) යනු Modern version control වල ඇති විශේෂාංගයකි. Repository එකේ default branch එක වන්නේ master branch එක වේ. සියලුම git පවතින්නේ master branch එකකය. ඔබ වැඩ කරනු ලබන්නේ Master branch නම් සියලුම code සහ commit පවතින්නේ එම ශාඛාව තුලය. ඒ සමගම විශේෂාංග ශාඛා සෑදිමට හැකිය නව ශාඛාවක් ආරම්භ කිරිමේ අරමුණ යම් project එකක වැඩ කිරිමේදි යම් කාලයක් වන අනු කොටසක් develop කිරිමට ඇතිනම් එය තවත් ශාඛාවකට වෙන් කරනු ලැබේ. එලෙස වෙන් කරනු ලබන්නේ යම් කාලයක් ගත develop එකක් සිදුවන අතර වාරයේ වෙනත් අත්යවශ්යය pull එකක් ගැනීමට සිදු වුවහොත් coding එක අතරමගදි එම කාර්යය සම්පූර්ණ නොකොට push කර pull එක ගැනීමට සිදුවේ. සමහර අවස්ථාවලදි එම නිසා live site එකට පවා හානි විය හැකිය. එම නිසා ප්රධාන ශාඛාවට අමතරව තවත් ශාඛාවක් නිර්මාණය කර එහි අදාල අනු කොටසේ development සියල්ල සිදු කරයි. එමගින් ප්රධාන code එකට හානියක් සිදු නොවේ.
මේ ආකාරයෙන් එකම project එකට branch කිහිපයක් නිර්මාණය කරගැනීමට හැකියාව ඇත. එම කාර්යය අවසන් වූ පසු merge කිරිම මගින් master branch එකත් අදාල අනෙක් branch එකත් එකට එකතු කරනු ලබයි.
Development සිදු කරන අවස්තා වලදි මෙම branches අතර මාරු විමට සිදු වේ. ඒ අවස්ථාවදි වැඩ කරන branch එකෙන් වෙනත් branch එකකට මාරු විමට අවශ්ය නම් checkout command එක මගින් shift විය හැකිය.
Eg:- git checkout master
Git conflict
එකම file එකක එකම ස්ථානයක edit එකක් කර ඇති අවස්ථාවක හෝ එක් ශාඛාවක ගොනුවක් මකා දමා අනෙක් branch එකේ edit එකක් කල විට conflict ඇතිවේ. කණ්ඩායමක් සමග වැඩ කිරිමේදි බොහෝ විට conflict ඇතිවේ.
<<<<<<< HEAD (Current Change)
<p>world</p>
==========
<p>there</p>
>>>>>>> master (Incoming Change)
Conflict එකකදි මේ ආකාරයෙන් පෙන්වනු ඇත. එවිට අප සිදු කරන වෙනස්කම් අනුව conflict එක ඉවත් කිරිමට අපට තීරණ තුනක් ගැනීමට සිදුවේ.
1. Accept Current Change
2. Accept Incoming Change
3. Accept Both Changes
එනම් පවතින change එක තියාගන්නවද අළුතින් එකතු උන change එක තියාගන්නවද නැතිනම් අවස්ථානුකූලව දෙකම තියාගන්නවද යන්නයි.
conflict එක සෑදු පසු නැවත git commit කර git push කල යුතු වේ.