Projektihaldus ning õpetused git ja githubi kasutamiseks
Sisukord (projektihaldus) | |
---|---|
Üldine ülesehitus | Issued Branchid |
Mis on "branch"? | |
Mis on "pull request"? | |
Merge conflict |
Projektihaldus
Üldine ülesehitus
Issued
Issue peab kirjeldama, mis teha on vaja.
Issue maht ei tohi olla liiga suur (kui on liiga suur, siis tükeldada väiksemateks issuedeks).
Issue saab sulgeda keegi teine peale autori.
Issue peaks olema seotud branchiga, githubis saab uut issuet luues, luua ka kohe branchi.
Issued tuleks luua ette, nt iga nädala alguses, ning iga nädal siis neid lahendada.
Alguses ei pea issuel assignee'd olema, kuid kui hakkad issuega tegelema, siis lisa iseennast asignee'ks (või keegi teine lisab sinu).
Issudel võiks olla ka labelid (neid võib ise ka juurde teha).
Issue juures võiks olla kirjas ka kui suur on ennustatav ajakulu (estimate).
Branchid
Iga issue kohta on ka eraldi branch.
Branch peab olema seotud issuega (Issue number peab olema kuskil branchi nimes olemas. Hea on kasutada automaatslet genereeritud branchi nimesid).
Main / master branchi tohib ainult mergida (ehk sinna niisama pushida ei tohi).
Pull requesti viib läbi ning review'ib keegi teine, mitte pull requesti autor.
Mis on "branch"?
Branch on uus või eraldi versioon põhi repost (ehk main / master branchist). Branche kasutatakse selleks, et iga meeskonnaliige saaks oma asjade kallal tegeleda. Kui mitu inimest tegeleks samas branchis korraga siis tekiksid konfliktid, mida peaks väga tihti lahendama. Nt üks muutis muutuja nime, kuid teine kes ka seda muutujat kasutas, ei muutnud ning selle tõttu tekivad errorid. Branche seeb ühendada mergeides, ehk üks branch lisatakse teisele branchile juurde. Selleks et mergida peab enne tegema pull requesti, selleks et keegi saaks sinu koodi üle vaadata ning vajadusel ka tagasisidet anda enne põhi branchi mergemist.
Mis on "pull request"?
Pull request on sooviavaldus uuendada tavaliselt main branchi (või tagasi võtta muudatused. Võib olla ka teiste branchide vahel kui ainult main ja mingi muu).
Merge conflict
Merge conflict tekib juhul kui ühes failis tehakse samal ajal muudatusi (mitte ajaliselt, vaid branchide mõttes). Näiteks on meil 3 branchi: main, b1 ja b2. Ning kõigi on üks fail 'README.md', mille sisu algselt on
This is main branch.
Ütleme et b1-s muudetakse see tekst selliseks:
This is b1 branch.
Ning peale muutmist mergitakse main branchi. Ehk nüüdseks oleks main branchis samasugune tekst nagu b1-s.
Nüüd muudame teksti b2-s:
This is b2 branch.
Kui nüüd proovida mergida b2 branchi main branchi, siis tekib merge conflict'i, sest samaaegselt on kahes erinevas branchis muudetud sama teksti. Selleks et merge läbi viia tuleb valida, kas jätta alles b1-s tehtud muudatused või b2-s tehtud muudatused või lisada mõlemad muudatused kokku (nagu näidatud allpool).
This is b1 branch.
This is b2 branch.
See, kuidas konflikte lahendada, on kirjas siin.
Õpetused
Õpetused on tehtud VSCode'iga, võib ka muid rakendusi kasutada, kuid siis on tegevused natuke teised.
Repo loomine ning alla laadimine (clone)
Loo GitHubi konto ning loo uus repo (tee avalikuks, siis saavad ka tiimikaaslased repot vaadata, tiimi peale on üks repo).
Selleks et repo endale arvutisse alla laadida peab kõigepealt alla laadima ning installima git'i: https://git-scm.com/downloads.
Kõige lihtsam on alla laadida mitte portable, sest muidu on võib olla vaja PATH-i lisada see portable programm.
Ava cmd (Win + r ja kirjuta
cmd
) ning liigu sinna kausta (käsuga cd), kuhu sa oma repo tahad alla laadida (siin näites Desktop).Kui oled õiges kaustas, siis sisesta käsureale:
git clone [repo link]
, kus repo lingi saad githubis code nupu peale vajutades või aadressirealt. Nüüd peaks olema repo olemas ning võid repo avada kas vscode'i või muu programmiga.
Teiste muudatuste alla laadimine (pull) (VSCode)
Mine
Source control
allaVajuta "kolm punkti" ning vali "pull"
Pilt
Nüüd laetakse kõik muudatused githubist alla.
Teiste muudatuste alla laadimine (pull) (terminal)
Ava terminal ning mine enda projekti alla
Kirjuta
git pull
Muudatuste avalikustamine (commit ja push) (VSCode)
Selleks et teised sinu tehtud muudatusi näeks, tuleb need üles laadida githubi.
Mine
Source control
allaKirjuta mingi sõnum, mis kirjeldab sinu muudatusi (commit message)
Vajuta
Commit
ningYes
Vajuta
Sync Changes
ningOk
Muudatuste avalikustamine (commit ja push) (terminal)
Lisa failid, mida tahad commitida käsuga
git add [failid]
. Kui panna failide asemele*
, siis valitakse kõik failid, milles on muutused olnud.Loo commit ning pane ka commit message käsuga
git commit -m "[sõnum]"
, kus sõnum on muudatuste kirjeldusPushi see commit kasutades käsku
git push
.
Uue branchi loomine (VSCode)
Kõige lihtsam on branch luua githubis issuega ning peale seda teha lokaalselt git pull
ning liikuda uue branchi peale. Pullimise kohta loe siit
Olenevalt sellest, mis branchis sa hetkel oled, siis selle järgi tehakse ka uus branch (kõige mõistlikum on teha main'ist uus branch).
Kui aga on vaja luua ainult uus branch, siis saab seda teha minnes Source Controli alla ning vajuta "kolme punkti peale", vali "branch" ja siis "Create Branch".
Vali branchile nimi ning uus branch ongi loodud.
Uue branchi loomine (terminal)
Kõigepealt vali branch, mille soovid uue branchi aluseks võtta (enamasti on see main).
loo uus branch käsuga
git branch [branchi nimi]
Liigu uude branchi käsuga
git checkout [branchi nimi]
Branchide vahel liikumine (VSCode)
Vaata, et sul oleks kõige uuem versioon repost, selleks mine source control alla ning vajuta "kolme punkti" peale ning vali "pull".
Selleks, et liikuda branchide vahel, vajuta alumisel real hetkel olevat hetkese branchi nime ning vali branch kuhu liikuda tahad (need mis
origin/
-iga algavd on need, mis on githubi serveris, ülejäänud branchid on allalaetuna lokaalselt arvutis).
Branchide vahel liikumine (terminal)
Ava terminalis enda proejekti kaust.
Sisesta
git checkout [baranchi nimi]
, kus [branchi nimi] on branch, mida sa vaadata tahad.
Lokaalse branchi kustutamine (VSCode)
Enamasti on vaja seda teha siis kui branch on githubist kustutatud / mergeitud ning enam seda ei kasutata.
Mine Source Control alla
Vali "kolm punkti"
Vali
Branch
ja siisDelete branch ...
ning vali millise branchi sa ära kustutada tahad
Lokaalse branchi kustutamine (terminal)
Sisesta
git branch -d [branchi nimi]
Pull requesti loomine ja vastu võtmine / lahendamine
Pull requesti loomine
Fail main branchis
Fail b1 branchis
Fail b2 branchis
Pull requesti loomine (b1 -> main)
Vali branchid, millega soovid merge requesti teha.
Vajuta Create pull request
Lisa siia ka mingi ülevaatlik kirjeldus, mis antud branchiga lõid / muutsid.
Pull requesti vastu võtmine / lahendamine
Lisa ennast revieweriks ja assignee'ks ning vaata kood üle, proovi kas töötab, vajadusel küsi mis mingi asi tegi või soovita muudatusi.
Vajuta Confirm Merge
.
Ning kustuta ka vana branch ära ning märgi antud branchiga seotud issue lahendatuks.
Merge conflicti lahendamine (VSCode)
See on tehtud eelneva merge conflicti ning pull requesti loomise ja vastuvõtmise alusel.
Merge conflict githubis
Kõigepealt pull-i, selleks et kõik branchid oleksid uuendatud.
Liigu branchi, kuhu tahad mergida (main'i)
Mine Source Controli alla ning vali "kolm punkti", vali "branch", vali "merge".
Vali branch, kust sa tahad muudatused maini liikutada.
Vaata millised failid on konfliktis (explorer vaates on erinevat värvi ja hüüumärk on kõrval) ning ava need.
Siis vali
Resolve in Merge Editor
ning nüd tekib vaade, kus üleval vasakul on uue branchi muudatused, üleva paremal on main branchi muudatused ning all on see mis lõpuks main branchi läheb.Kahe ülemise vaate pealt saad valida
Accept incoming
võiAccept Current
. Vajadusel saad lõplikku osasse manuaalselt ka kirjutada vajalikke muudatusi. VajutadesAccept Current
Vajutades
Accept incoming
Salvesta see fail (kui kõik merge conflictid pole veel lahendatud, siis ära veel vajuta
Complete Merge
vaid lahenda ka ülejäänud merge conflictid ära).Kui kõik merge conflictid on lahendatud, siis vajuta
Complete Merge
ning avalda uuendused (Sync Changes
- see pull-ib ning siis push-ib).Peale
Complete Merge
vajutamistPeale commiti tegemist
Pilt sellest, milline näeb git-i puu välja peale merge'e (loodud VSCode extensioniga "Git Graph").
Peale seda võid minna GitHubi ning vana branchi ära kustutada.
Hall nupp lilla kasti sees
Delete branch
Issue loomine githubis
Mine githubis Issue'de alla
Vali
New Issue
Lisa Issuele pealkiri, kirjeldus ja ajaline pikkus (hinnang), võid lisada ka labeleid.
Järgmisi osasid ei pea kohe peale issue tegemist tegema. Võib ka nii teha et iga nädala või kahe nädala alguses loote issued valmis ja siis igaüks vaib endal issue, mida ta lahendama hakkab. Siis kui jõuab hetk kätte, mil alustad lahendamist, alles siis lood uue branchi ning paned ennast issues "assignee"-ks. (siis on ka uuem kood ilmselt main branchis, muidu kui teed kõik branchid valmis muutub nendes branchides kood juba liiga vanaks)
Loo juurde ka branch (all paremal Developement all
Create a branch
)Vali branchile nimi (automaatselt genereeritud sobib ka (peaasi et isse number sees oleks ja mingil viisil oleks standardne))
Nüüd on branch loodud ning saad loodud branchis issuet lahendama