Kort git-tutorial

Dette er ein enkel git-tutorial, der det også er behov for å tenkje sjølv/lese sjølv. Tutorialen tek deg gjennom heilt grunnleggande tema i git, brukt mot Bitbucket. Meir detaljerte guidar for git finst det mange av, denne her er eit fint utgangspunkt: https://git-scm.com/doc.

Installere git

Linux:
sudo apt-get install git
Windows: Last ned git for Windows, til dømes frå her: https://git-scm.com/download/win.
Alternativt, bruk Linux submodul i Win10, og installer git som for Linux.

Opprette repo (eller bruke eksisterande)

  1. Opprett konto på bitbucket.org. Bruk NTNU-epostadresse! Det er viktig, fordi NTNU har tilgang på academic license
  2. Lag eit nytt repository: "git-tutorial"
  3. Når du står i repository-visinga, klikk på "clone"
  4. I dialogen som kjem opp, kopier ut linken

Enkel jobb i repo

  1. Lag ei ny mappe ein lur plass på eigen PC.
  2. Frå kommandolinje (anten i Linux eller med git bash for Windows), køyr kommandoen du kopierte frå bitbucket.
  3. cd inn i mappa som blir laga
  4. Opprett ei ny fil, 'fil1.txt'
  5. Legg inn eit par linjer tekst i den fila
  6. Køyr så kommandoen
    git status
    Då vil du sjå at det står "Untracked files:", og fila di er lista der. Denne må vi legge inn i git for å tracke endringar.
  7. git add fil1.txt
  8. git status
  9. No ser du at fila står som ny fil. Då kan vi committe fila (dvs. ta med endringane)
  10. git commit -a -m "Oppretta første fila"
  11. Gjer ei endring i fila di, legg til og/eller fjern ei linje
  12. git diff
    Her vil du sjå at git viser deg kva for endringar du har gjort. Ting du tek bort er prefixa med '-' og gjerne farga raudt. Ting du har lagt til, er prefixa med '+' og farga grønt. Uendra tekst er kvit. Har du gjort fleire endringar i fila, på ulike stader, vil du få opp fleire blokker med tekst (men gjerne ikkje heile fila om den er lang; kun der du har endra).
  13. git status
    Her vil du sjå at fila står markert som "modified"
  14. La oss committe og pushe og gå vidare:
    git commit -a -m "fleire endringar"
    git push
Du kan gjerne gjere fleire endringar og fleire commit før du går vidare til neste steg.

Push til sentral server

  1. Så kan vi gjere eit lite triks for å luke vekk ei warning som vil komme i neste steg.
    git config --global push.default simple
    Dette betyr at kun den branchen du jobbar no vil bli pusha til serveren.
  2. Last opp endringane dine til serveren:
    git push
    Du vil bli spurt om passord, og mogligens også namn og epostadresse.
  3. Så kan du gå inn på Bitbucket, navigere til "Source" på venstre-menyen, og vipps, der ligg fila di!

Jobbe saman

No har vi sett litt på eit par av hovudpoenga med git, det å kunne tracke endringar ein gjer i kjeldekode eller tekstfiler lokalt på eiga maskin, og i tillegg publisere dette til server. Om du jobbar åleine på eit prosjekt, så kan det somme gangar vere nok å berre ha koden i eit lokalt git-repo, så har du moglegheit til å halde styr på endringar, gå fram-og-tilbake mellom versjonar og ta vare på ulike endringar på ein grei måte. Får å få fram korleis ein kan jobbe med fleire, kan vi gå litt vidare til å sjå på litt av det som er poenget å bruke git og ein sentral server.
  1. La vinduet du jobbar med no ligge, opne ein ny terminal (eller git bash i Windows) og gjenta dei første stega fram til du har lagt til, committa og pusha ei ny fil "fil2.txt" til server
  2. Gå så inn på bitbucket igjen, under "Source", og sjå at det ligg to filer der; "fil1.txt" og "fil2.txt". Så no har altså to brukarar jobba mot same repo. Då må jo den første brukaren få sjå kva den andre har gjort:
  3. Gå tilbake til første terminal-vindu igjen og skriv:
    git pull
    Då vil git laste ned det du gjorde i det andre terminal-vinduet.
  4. Kontroller at du har fått "fil2.txt" i denne mappa også. Du kan gjere ei endring i den fila, committe og pushe. Gå gjerne så inn i terminal nr. 2, og skriv
    git pull
    for å laste ned siste endringar der også.
    Ein generell regel kan vere at om det er fleire som jobbar i lag, så er det lurt å køyre 'git pull' før ein committar eigne endringar, for å sjå om andre har gjort noko. Om andre har gjort endringar, kan det vere at git gir deg beskjed om å commite først, før du køyrer git pull.

Meir avansert samarbeid - branch

Ein kan ha mange branchar i git. Eit døme er om to personar prøver ut sine eigne ting i kvar sin private branch, og så har ein master-branch for det som er sluttproduktet. Utviklarane flyttar ting inn i master når alt er testa og .
Meir dokumentasjon: https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
  1. Lage ein ny branch du kan gjere endringar i, før du legg det inn i master:
    git checkout -b branch2
    Det som no skjer, er at det blir laga ein ny branch (sjå på det som ei "virtuell" arbeidsmappe), som har med alle endringar sålangt.
    git branch
    viser kva for branchar du har i repoet ditt, her vil det stå "* branch2" og "master", der '*' tyder aktiv branch.
  2. Gjer nokre endringar, til dømes lag ei ny fil, og gjer endringar i ei anna fil.
     git -a -m "endringar i branch2"
  3. La oss prøve å få branchen over på serveren:
    git push
    No får vi ei feilmelding fordi branchen ikkje finst på serveren. Vi kan gjere som git føresler:
    git push --set-upstream origin branch2
  4. Så kan vi gå på Bitbucket igjen, og sjå på Source. Der kan vi no velge å sjå source for "branch2".
  5. La oss så sjå korleis ting ser ut i det andre terminal-vinduet:
    git branch
    Her ser vi at vi berre har ein branch, nemmeleg 'master'.
    git pull
    Vi får då beskjed om at det finst ein 'branch2'. Vi kan då
    git checkout branch2
    for å begynne å jobbe i denne.
  6. Gjer nokon endringar i fil1.txt og commit dette.
  7. Du kan gjere endringar litt fram-og-tilbake mellom dei to vindua for å sjå på oppførselen, redigeringskonfliktar og så vidare.
    For å gå fram-og-tilbake mellom dei to ulike branchane, bruk
    git checkout branchname
    Hugs å commit endringar!
  8. Til slutt, om ein så finn ut at alle endringane i branch2 er bra, og vil ha dei med i master igjen, kan ein:
    git checkout master
    git merge branch2
    Sjekk innhaldet i mappa før og etter ein køyrer desse kommandoane, så ser ein kva git gjere. Så må dette leggast tilbake på server med
    git push
    Då kan du sjå alle endringane på bitbucket igjen.
Lykke til!
Roger Birkeland - roger.birkeland @ ntnu.no