Git ගැන හැමදේම - පළමු කොටස

siri_ayya

Well-known member
  • Feb 1, 2022
    16,967
    1
    29,858
    113
    ආයුබෝවන් කිරි වැසියෝ හැමෝටම..මේ thread එකෙන් අපි කතා කරන්නේ git කියන්නේ මොකක්ද , එක ඕන වෙන්නේ අයි , සහ එක use කරන්නේ කොහොමද කියන දේවල් ගැන..

    විශේෂයෙන් කියන්ටෝන මේක @HAneo මැතිතුමා ගේ #එකටගොඩයමු මෙහෙයුමට අනුපුරකයක් (supplementary ) විදිහට පලකරන නුලක්..ඒ ගැන හානියෝ මහතාටත් ස්තුති කරන ගමන් අපි වැඩේට බහිමු..

    මොකක්ද git කියන්නේ?

    git කියන්නේ version control system එකක්..ගොඩක් සරලව කිව්වොත් digital file එකක versions manage කරගන්න උදව් වෙන ටූල් එකක් ..

    versions manage කරනවා කියන එක තව ටිකක් පැහැදිලි කරන්න පුලුවන්ද?

    එල..අපි පාවිච්චි කරන ඕනෑම file එකක් අපි change කරනවා නේ..එහෙම file එකකට change එකක් කරාම අන්තිම output එක අර file එකේ version එකක් කියල කියන්නේ..

    උදාහරණයකට අපි හිතමු ඔයාගේ computer එකේ ඔයා sample.txt නමෙන් new Text Document එකක් හදනවා කියල ..ඒක ඒ file එකේ first version එක..

    දැන් ඔයා ඒ file එක open කරල මොනවහරි ටයිප් කරලා save කරනවා..දැන් තියෙන text file එකට අපි කියනවා sample.txt file එකේ second version එක කියලා..ඔයා ආයෙම ඒ file එක edit කරල save කරොත් එතකොට sample.txt file එකේ අලුත් version එකක් තමයි හැදෙන්නේ ..

    git වලින් කරන්නේ මේ විදිහට හැදෙන versions, පිළිවෙලට system එකක track කරලා තියාගන්න එක..එතකොට අපිට file versions අතරේ ඕන ඕන විදිහට මාරු වෙන්න පුළුවන්..

    හරි..එත් මට දැනගන්න පුලුවන්ද ඇත්ත ලෝකෙදි git use වෙන විදිහ ගැන ?

    ok ..දැන් ඔයා හිතන්න ඔයා මොකක්හරි ලොකු software එකක වැඩ කරන කෙනෙක් ..files දහස් ගානක් තියෙන app එකක් ..මේ app එකේ ඔයාට ඕන වෙනවා අලුතින් feature එකක් එකතු කරන්න..ඉතින් ඔයා එකට ඔයාට හරි කියල හිතෙන විදිහට වැඩ දාලා code එකත් ලියනවා කියලා අපි හිතමු..මේ වැඩේ දී files 10ක් 15ක් විතර සෑහෙන change වෙනවා කියලත් හිතමු කෝ ..

    ඔන්න දැන් ඔයා code එක ටිකක් ගහල රෑ වෙලා නිසා edit කරපු files ටික save කරල ide එකත් close කරල නිදාගන්නවා..හැබැයි ඔයාට පහුවෙනිදා උදේ කල්පනා වෙනවා ඒ code එක ලියපු විදිහ sampurna වැරදියි කියල..දැන් මොකද කරන්නේ ..files undo කරන්නත් විදිහක් නෑ ..දැන් ඔයාට සිද්ද වෙනවා කරපු සේරම changes manually බල බලා ain කරන්න..

    හැබැයි එහෙම කරලත් වැඩේ හරියයිද sure නෑ ..මොකද ඔයාට සමහර files වල මොනවද edit වුනේ කියල හරියටම මතක නැති වෙන්න පුළුවන්..එහෙම සීන් එකකදී ඔයාට වැඩ දෙකක් සෙට් වෙනවා ..එකක් ara kalin raa ලියපු code එක undo කරන්න ඕන ..දෙවෙනියට එහෙම undo කරලා හදාගත්ත repo එක ඇත්තටම වැඩ ද කියලත් බලන්න ඕන ..

    හැබැයි ඔයා ඔයාගේ project එක git වලින් manage කරන්න set කරගෙන තිබුන නම් ඔය කිසි කරදරයක් නෑ ..එක command එකෙන් සේරම කරපු changes undo වෙලා project එක තිබ්බ තත්වෙටම එනවා ..:P

    මරු නේ..ඕක use කරන්න පුළුවන් software සීන් එකේ ඉන්න අයට විතරද?

    අපෝ නෑ ..හිතන්න ඔයා novel ලියන කෙනෙක් කියල .. එහෙමත් නැත්නම් latex document එකක් ලියන scientist කෙනෙක් කියල .. ඔය මොන file එක වුනත් git වලින් මන් කලින් කියපු විදිහට track කරගන්න පුලුවන් ..

    එහෙනම් graphic design files,images එහෙමත් track කරන්න පුළුවන් ඇති නේද ?

    අන්න ඒවා නම් බෑ පුතේ.. git වලින් images, .psd files වගේ binary files track කරන එක නම් කරන්න ලේසි වැඩක් නෙවෙයි..documents related ඕන file එකක version manage කරගන්න නම් git පංකාදු පහයි..

    හරි අපි දැන් දන්නවනේ git කියන්නේ මොකක්ද කියලා..අපි practical example එකක් බලමුද දැන් ?

    එළම..සේරටම කලින් මෙන්න මේ tutorial එක බලාගෙන මුලින්ම ඔයාගේ computer එකේ git setup කරගෙන ඉන්ටකෝ :)

    https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

    install කරගත්තට පස්සේ බලන්න ඕනේ අපිට command prompt එකෙන් git access කරන්න පුලුවන්ද කියලා ..ඒකට command prompt එකක් open කරලා git කියලා type කරල enter කරන්න..එතකොට මෙන්න මෙහෙම පටන් ගන්න එකක් වැටෙනවා නම් ඒ කියන්නේ ඔයාගේ computer එකේ git install වෙලා තියෙන්නේ දැන්..

    usage: git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] [--super-prefix=<path>] [--config-env=<name>=<envvar>] <command> [<args>]
    These are common Git commands used in various situations:

    ඊට පස්සේ ?

    දැන් git install වෙලා නිසා අපෙ වැඩේට බහින්න පුළුවන්..

    මුලින්ම ඔයා කැමති තැනක හදාගන්න folder එකක් කැමති නමකින් ..මන් මගේ macbook එකේ Desktop එකේ හදාගන්නවා GitTest කියල folder එකක් ..ඊලග steps ඔක්කොටම මන් example එක විදිහට use කරන්නේ මේ folder එක ..

    දැන් මේ folder එක ඇතුලේ හදන්න text files කීපයක්...ඒ හදාගත්ත files වල මොන මොනවහරි ලියල save කරන්න..

    හරිද? ඔන්න දැන් අපි ගාව තියෙනව අපේ project එකේ initial version එක..දැන් අපි git වලට කියන්න ඕනේ මේ folder එකේ files වලට ඉස්සරහට කරන changes track කරන්න කියල..

    මේ වැඩේට git ට අපේ project එක සම්බන්ධ information store කරගන්න තැනක් අපි හදල දෙන්න ඕනේ අපේ project එක ඇතුළේ ..ඒක අපි කරන්නේ අපේ project එකේ git initialize කරන එකෙන්. :yes:

    command prompt එකෙන් ඔයාගේ folder එකට ගිහින්, git init ගහලා git initialize කරගන්න පුළුවන්..

    cd Users/OpenSourceIsTheWay/Desktop/GitTest
    git init

    එතකොට එයි මෙහෙම output එකක්.. මේක ආවා කියන්නේ වැඩේ හරි ..

    Initialized empty Git repository in /Users/OpenSourceIsTheWay/Projects/GitTest/.git/

    මේ විදිහට අපිට අපේ project එකට git දාගන්න පුළුවන් ..හැබැයි ඒ මදි ..අපි තෝර ගන්න ඕනේ git ට track කරන්න බාර දෙන්න ඕනේ මොන files ද කියලා..එකට වෙනම command එකක් තියෙනව ..එක තමා git add..

    ඔයාගේ folder එකේ ඉඳන් command prompt එකේ run කරන්න..

    git add .

    මේ command එකෙන් අපි git ට බාර දෙන්න ඕනේ files ටික තෝරා ගන්නවා..(මෙතෙන්දි නම් අපේ folder එකේ තියෙන සේරම files මන් තෝරා ගන්නවා..dot එකෙන් කියන්නේ folder එකේ තියෙන සේරම තෝරාගන්න කියල )

    මෙහෙම files තෝරාගන්න එකට අපි කියන්නේ stage කරනවා කියල..දැන් අපේ folder එකේ සේරම files තියෙන්නේ staged area එකේ ..

    දැන් අපිට පුළුවන් තෝරා ගත්ත (stage කරපු) files ටික git ට බාර දෙන්න.. එකටත් වෙනම command එකක් තියෙනව..එක තමයි git commit කියන්නේ..

    ඔයාගේ folder එකේ ඉඳන් command prompt එකේ run කරන්න මේ command එක…

    git commit -m “initial commit”

    දැන් ඔයාල බලනවා ඇති අර මොකක්ද -m එකක් ගහල කරේ කියලා..අපි git ට files බාර දෙනකොට ඒ බාරදෙන දේවල් ගැන පොඩි විස්තරයක් එක්ක තමයි බාර දෙන්න ඕන..ඒ විස්තරය තමයි අපි -m ගහල “” ඇතුලේ enter කරන්නේ ..

    ඔන්න දැන් අපේ project setup එක හරි …දැන් තමයි git ගේ නියම වැඩ කෑලි ටික පටන් ගන්න යන්නේ ..but සමහර අයට මේ ටිකත් too complex වෙන්න පුළුවන් ..විශේෂයෙන් command prompt එක පාවිච්චි කරලම නැති අයට ..ඒ අයවත් ඇදගෙන යන්න ඕන නිසා අපි අදට මෙතනින් නවත්වමු.. හෙට ත්‍රෙඩ් එකෙන් බලමු git වලින් අපේ project එකේ දාන්න පුළුවන් වැඩ කෑලි මොනවද කියලා..:P

    මේකේ විස්තර කරලා තියෙන දේවල් වල අපැහැදිලි තැනක් හරි ඉස්සරහට tutorials improve කරන්න suggestions හරි තියෙනවා නම් අනිවාර්යෙන් ම comments වලින් කියන්න :)

    හැමෝටම සුබ දවසක් 🙏

    #එකටගොඩයමු
     
    Last edited:

    siri_ayya

    Well-known member
  • Feb 1, 2022
    16,967
    1
    29,858
    113
    TFS!! 😍
    මේ Project එකට පාවිච්චි කරන GitHub Repository එක හදලද තියෙන්නේ??
    මෙතන project එක කියල කියන්නෙ folder එකක් ඇතුළේ තියේන text files ටිකක් විතරයි මචන්.. මන් පළවෙනි lessons දෙකෙන් try කරන්නේ git වලින් file manage කරන හැටි පෙන්වන්න..:)
    මුලින්ම ඔයා කැමති තැනක හදාගන්න folder එකක් කැමති නමකින් ..මන් මගේ macbook එකේ Desktop එකේ හදාගන්නවා GitTest කියල folder එකක් ..ඊලග steps ඔක්කොටම මන් example එක විදිහට use කරන්නේ මේ folder එක ..

    දැන් මේ folder එක ඇතුලේ හදන්න text files කීපයක්..text ම වෙන්න ඕනේ නෑ word file එකක් , excel file එකක් උනත් කමක් නෑ ..ඒ හදාගත්ත files වල මොන මොනවහරි ලියල save කරන්න..

    හරිද? ඔන්න දැන් අපි ගාව තියෙනව අපේ project එකේ initial version එක..දැන් අපි git වලට කියන්න ඕනේ මේ folder එකේ files වලට ඉස්සරහට කරන changes track කරන්න කියල..
     

    Honda.putha

    Well-known member
  • Dec 26, 2017
    17,244
    29,772
    113
    මේක පාවිච්චි කරලා කරන්න පුළුවන් ප්‍රධාන හා ලොකුම වැඩේ එක ප්‍රොජෙක්ට් එකක කට්ටිය ගොඩක් ඉන්නකොට ඒ ඒ අයගේ කෑලි අවුලක් නැතුව එක ප්‍රොජෙක්ට් එකක් විදිහට පවත්වාගෙන යන්න පුළුවන් වීම.

    මෙහෙම හිතුවොත් ඔන්න ප්‍රොජෙක්ට් එකක් තියෙනවා. ඒකෙ A,B,C කියලා තුන්දෙනෙක් වැඩ කරනවා.

    ප්‍රොජෙක්ට් එක මුලින්ම එක තැනක, සර්වර් එකක, මුලින්ම සේව් කරනවා.

    ඊටපස්සෙ git වල තියෙනවා clone කියලා එකක්. ඒකෙන් පුලුවන් තම තමුන්ගෙ PC වලට කොපි එකක් ගන්න.

    ඊටපස්සෙ A වෙනම උගෙ වැඩේ කරනවා B වෙනම C වෙනම.

    ඊටපස්සෙ A තමුන්ගෙ වැඩේ ඉවර කරලා commit කරනවා. හිතමුකො A කියන කෙනා #123 කියන Bug එක fix කරනවා කියලා. එයා ඒක ඉවර කරලා විස්තරයකුත් දානවා මොකද කරේ කියලා. එතකොට පස්සෙ ඒ වැඩ ටික බලගන්න පුලුවන්.

    ඊටපස්සෙ push කරනවා. ඒ කියන්නෙ එයා කරපු changes ටික server එකට යවනවා.

    දැන් ඔන්න Bත් එයාගෙ වැඩේ කරලා commit කරා. එයත් push කරන්න යන්නෙ. ඒත් system එක අපිට කියනවා ඔයාගේ දැන් තියෙන කොපියට වඩා උඩින් අප්ඩේට් එකක් තියෙනවා කියලා.

    එතකොට අපි pull කරන්න ඕනෙ. ඒ කියන්නෙ සර්වර් එකෙන් අපේ එකේ කොපි එක අප්ඩේට් වෙනවා. A කරපු වෙනස්කමුත් එක්කම.

    A කරපු වෙනස්කම් වලයි B කරපු ඒවලයි පැටලිලි නැත්නම් ප්‍රශ්නයක් නෑ. නැත්නම් මැනුවලි පොඩ්ඩක් හදන්න වෙනවා. ඊටපස්සෙ එයාගේ ටික push කරනවා.

    ඔහොම ඔහොම ඔහොම ප්‍රොජෙක්ට් එක git වලින්ම merge කරගන්නවා.
     

    siri_ayya

    Well-known member
  • Feb 1, 2022
    16,967
    1
    29,858
    113
    මේක පාවිච්චි කරලා කරන්න පුළුවන් ප්‍රධාන හා ලොකුම වැඩේ එක ප්‍රොජෙක්ට් එකක කට්ටිය ගොඩක් ඉන්නකොට ඒ ඒ අයගේ කෑලි අවුලක් නැතුව එක ප්‍රොජෙක්ට් එකක් විදිහට පවත්වාගෙන යන්න පුළුවන් වීම.

    මෙහෙම හිතුවොත් ඔන්න ප්‍රොජෙක්ට් එකක් තියෙනවා. ඒකෙ A,B,C කියලා තුන්දෙනෙක් වැඩ කරනවා.

    ප්‍රොජෙක්ට් එක මුලින්ම එක තැනක, සර්වර් එකක, මුලින්ම සේව් කරනවා.

    ඊටපස්සෙ git වල තියෙනවා clone කියලා එකක්. ඒකෙන් පුලුවන් තම තමුන්ගෙ PC වලට කොපි එකක් ගන්න.

    ඊටපස්සෙ A වෙනම උගෙ වැඩේ කරනවා B වෙනම C වෙනම.

    ඊටපස්සෙ A තමුන්ගෙ වැඩේ ඉවර කරලා commit කරනවා. හිතමුකො A කියන කෙනා #123 කියන Bug එක fix කරනවා කියලා. එයා ඒක ඉවර කරලා විස්තරයකුත් දානවා මොකද කරේ කියලා. එතකොට පස්සෙ ඒ වැඩ ටික බලගන්න පුලුවන්.

    ඊටපස්සෙ push කරනවා. ඒ කියන්නෙ එයා කරපු changes ටික server එකට යවනවා.

    දැන් ඔන්න Bත් එයාගෙ වැඩේ කරලා commit කරා. එයත් push කරන්න යන්නෙ. ඒත් system එක අපිට කියනවා ඔයාගේ දැන් තියෙන කොපියට වඩා උඩින් අප්ඩේට් එකක් තියෙනවා කියලා.

    එතකොට අපි pull කරන්න ඕනෙ. ඒ කියන්නෙ සර්වර් එකෙන් අපේ එකේ කොපි එක අප්ඩේට් වෙනවා. A කරපු වෙනස්කමුත් එක්කම.

    A කරපු වෙනස්කම් වලයි B කරපු ඒවලයි පැටලිලි නැත්නම් ප්‍රශ්නයක් නෑ. නැත්නම් මැනුවලි පොඩ්ඩක් හදන්න වෙනවා. ඊටපස්සෙ එයාගේ ටික push කරනවා.

    ඔහොම ඔහොම ඔහොම ප්‍රොජෙක්ට් එක git වලින්ම merge කරගන්නවා.
    Yeah :yes:
    දැනට local file manage කරන හැටි පෙන්නලා ටිකෙන් ටික මේ level එකට එන්න බැලුවෙ :)