ITI0011:git

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

Tagasi kursuse lehele: ITI0011

Juhend

GIT on versioonihaldustarkvara, mida pruugitakse paljudes tarkvaraettevõtetes dokumentatsiooni ja lähtekoodi haldamiseks.

Põhitegevused versioonihalduses, mida läheb vaja käesolevas aines, on:

  • repositooriumi/salve kloonimine (git clone) (esmakordeks salve kopeerimiseks);
  • failide lisamine versioonihaldusse (git add);
  • muudatuste registreerimine mingis mõistlikus seisus (git commit);
  • muudatuste üleslaadimine serverisse (git push) (commit registreerib muutused kohalikus masinas, alles push laeb üles!);
  • muudatuste allalaadimine serverist ja kohalike muudatuste integreerimine (git pull).

Lisaks võib vaja minna:

  • repositooriumi/salve oleku kuvamist (git status);
  • repositooriumi/salve muudatuste ajaloo kuvamist (git log);
  • mittevajalike failide kustutamist (git rm);
  • ajaloo graafilist kuvamist (gitk).

GIT tarkvara võib kasutada mitmel viisil:

1) Kasutades GIT tarkvara Git veebilehelt. Git tarkvara tasub oma arvutisse laadida igal juhul, sest Git tarkvara abil on võimalik lihtsa vaevaga kontrollida, mis õnnestus git serverisse laadida. Juhend käsurealt kasutamiseks:Meedia:Git-howto.pdf

2) IntelliJ plugin...

3) Eclipse-st kasutades EGit pluginat. Juhend GIT-i kasutamiseks Eclipse'is: Meedia:Egit-howto.pdf


Näiteks, käivitades Windows Exploreris hiire parema nupu alt kontekstitundlikust menüüst Git Gui saate kloonida repositooriumi/salve https://teie-ttu-uni-id-kasutajanimi@git.ttu.ee/kursused/iti0011/teie-ttu-uni-id-kasutajanimi.git (NB! see link brauseris ei tööta!) valitud kataloogi. NB! Uni-ID kasutajanimes peavad olema KÕIK VÄIKESED TÄHED! Seejärel saab kontrollida, kas serverist kloonitud kataloogis on kõik vajalikud failid olemas.


Küsimuste ja probleemide korral kirjutage: git-admin@cs.ttu.ee

Lisainfo GIT raamatust (inglise keeles).

git'i kasutamine aines

Kõik harjutus- ja kodused ülesanded tuleb laadida git'i. Harjutustunniülesanded peavad olema kaustades EX01, EX02 jne. Kodused ülesanded peavad olemas kaustades HW01, HW02, HW03, HW04. Number näitab mõlemal juhul järjekorranumbrit. Vastav viide on ka ülesande kirjelduse juures. Git'i võib laadida terve projekti (HW01/src/pakett/MinuFail.java) või otse lahendusefailid (HW01/MinuFail.java). Tähelepanu, kui laete käsitsi, peate olema kindlad, et programm selliselt ka käivitub. Soovitatav on laadida terve projekt selliselt, et lähtekoodi juurkaust (või mõni selle ülemkaust) on git'i kaustas (näiteks EX01 või HW01).

Sammud projekti/lahenduse giti panemisel:

git clone https://uniid@git.ttu.ee/ained/iti0011/uniid.git
cd uniid
mkdir EX00
cd EX00

Siia kausta tuleks nüüd luua fail, näiteks Main.java .

git add Main.java
git commit -m "kommentaar seoses tehtud muudatustega, näiteks jagamise viga parandatud"
git push origin master


Projekti nime muutmine git'is

Kui oled juba oma koodi üles laadinud vale kausta nimega, siis siin on juhend, kuidas kausta nime muuta läbi Eclipse'i. Juhend eeldab, et tudeng on laadinud esimese kodutöö üles kausta "Esimene". Oleks vaja laadida aga "HW1".

Kui teha projektile "rename", siis projekti nimi eclipse'is muutub ära, aga kausta nimi, milles projekt füüsiliselt on, jääb samaks. See kaust peaks asuma kasutaja "git" kaustas (windowsis c:\Users\kasutaja\git\eesnimi.perenimi näiteks).

Ilus ja eelistatud viis, kuidas projekti/kausta nime muuta (saate teha Git Bash'ist): http://stackoverflow.com/a/11183844/122128 Hiljem peate projekti uuesti importima.

Saab ka sedasi (aga see sisuliselt kustutab vana kausta maha ja lisab uue, eelmine meetod muudab kausta nime git'is):

  1. projekti peal parem klikk -> Refactor -> Move ...
  2. nüüd tuleks ära muuta projekti kausta nimi (näiteks kui enne oli "Esimene", siis panna "HW1"; pikalt siis: c:\users\ago\git\ago.luberg\Esimene=> c:\users\ago\git\ago.luberg\HW1)
  3. igaks juhuks võib projekti nime ka ära muuta (kuigi minu teada see git'i ei mõjuta - lihtsalt endal on pilt selgem). parem klikk projekti peal -> Refactor -> Rename (muuta siis ka "HW1"-ks).
  4. projekti peal parem klikk -> Team -> Commit
  5. avanevas aknas ta peaks näitama osade failide kohta "+" märki (need, mis on nüüd uues "HW1" kaustas) ja osade kohta halli "x" märki (need, mis olid vanas "Esimene" kaustas). Kõik x-märgiga failid tuleks ära märkida - siis need kustutavad gitist ära. Ja kõik vajalikud "+" märgiga failid tuleks ära märgistada - need lähevad giti üles.
  6. seejärel tavaline Team -> Push to Upstream

5. sammu puhul võib põhimõtteliselt ka "x" märgitustega failid märkimata jätta. Sellisel juhul neid faile gitist ei kustutata. Peamine on, et "HW1" kaust saab lisatud.

Probleemid

Probleemide vältimiseks tehke alati enne koodimuudatusi repositooriumile git pull. See tõmbab uusima versiooni serverist. Kui see samm jääb tegemata, võib juhtuda, et teie failide seis arvutis läheb konflikti serveris oleva seisuga. Selle vältimiseks on alati hea kõigepealt teha pull, seejärel koodi muuta ja seejärel commit & push.

Repositooriumi kloonimine serveris olevasse seisu

Tekkinud konfliktide puhul võib juhtuda, et te ei suuda erinevaid harusid kokku ühendada (merge). Sellisel olukorras on üks võimalik lahendus see, et kloonite kogu salve uuesti ja laete oma lahenduse sinna. Selleks tehke läbi kõik needsamad sammud, mis te giti kasutuselevõtmise alguses tegite:

  • tehke oma koostatud failidest (mida veel repos pole) igaks juhuk koopia
  • git clone
  • git pull
  • kopeerite oma projekti/failid
  • git add (uue failid indeksisse)
  • git commit (kohalikku salvehoidlasse)
  • git push (serverisse).

Kursuse kood

Loengute ja praktikumide koodid: https://git.ttu.ee/kursused/iti0011/materjalid.git (veebist pole kättesaadav, saate tõmmata alla kasutades UNI ID-d).

Kasutamiseks Eclipse'is:

  • kloonite endale salve
  • Git Repositories vaates antud salve peal parem klikk - Import projects...
  • avaneb nimekiri kaustadest. Sealt valida "ITI0011", "next"

Saate kasutada üleval toodud juhendit, et see salv endale Eclipse'i projektiks importida. Kasutate sama kasutajanime/parooli, mis enda salve jaoks.

Antud salve sees on kaust ITI0011, mis on Eclipse'i projekt (peaksite saama selle importida git vaatest). Nimetatud projektis on struktuur selline "praktikumid" paketi all on erinevad praktikumi korrad. "praktikum11" tähendab 11. praktikum (mis peaks olema 6. nädala esimene praktikum). Iga praktikumi korra all on erinevad grupid (g12, g34, g5). Number grupi nimes näitab, millised IAPB2x rühmad sellest käivad. Seega "g12" tähistab IAPB21 ja IAPB22 praktikumi.