Skip to content

Komme i gang med Git

Øistein Søvik edited this page Jul 17, 2018 · 1 revision

Introduksjon

For å laste opp oppgaver til kidsakoder.no bruker vi GitHub. Dette er nettside som gir flere brukere muligheten til å jobbe i et prosjekt samtidig, laste opp hver sine deler, og så sette alt sammen til ett felles prosjekt.

Vi kan bruke ordtaket "jo flere kokker jo mer søl" når vi jobber med en side som Kodeklubbens nettside. Tenk på nettsiden som en stor kake som mange flittige kokker jobber sammen om å lage. Dersom du begynner å endre direkte på kaken kan det hende du endrer noe de andre kokkene var veldig fornøyde med, eller kanskje du ved et uhell brukte et kilo pepper i stedet for en teskje. For å hindre disse uhellene bruker vi versjonskontroll.

Helt enkelt fungerer det slik at du lager en kopi av prosjektet på Internett, og så en lokal kopi på datamaskinen din. Så deler du prosjektet opp i flere stykker du kan jobbe på individuelt. Du gjør forbedringene på en liten bit først, og så kan du be en administrator i Kodeklubben om å bytte ut den tilsvarende biten i det opprinnelige prosjektet med den du har forbedret. Det kan hende du får beskjed om å gjøre noen mindre endringer, men så vil en del av Kodeklubbens prosjekt være forbedret med dine endringer.

Oppsummering

Dette er ideen bak Git, og i praksis fungerer det slik: Det er en felles samling av filer som nettsiden bygges opp av (her: github.com/kodeklubben). Dette kalles et repo, kort for repository.

  1. Hver bruker som ønsker å bidra lager en fork, sin egen kopi av repo-et.

  2. Brukeren lagrer (kalt clone på engelsk) sin fork lokalt på sin datamaskin.

  3. En bruker lager en branch i sin egen fork, og bytter til den.

  4. Brukeren gjør endringer i en eller flere filer, eller legger til noe helt nytt.

  5. Brukeren kan commit-e endringer gjort i en branch,

  6. Når du er ferdig med å commit-e kan du push-e endringene til Internett for å gjøre den klar for deling med resten.

  7. Brukeren legger inn en pull request (ofte forkortet PR) og ber om at endringene hun har gjort lokalt blir merge-t med repo-et.

  1. Alle kan se og kommentere på PR-en, før en administrator kan merge filene.

  2. Endringene som brukeren gjorde i sin branch er nå en del av repo-et.

Komme i gang med Git

Git er skjelettet som ligger til grunn for arbeidsflyten vi beskriver her. Det finnes en rekke ulike programmer (eller mer korrekt brukergrensesnitt) for å sammhandle med dette skjelettet, for eksempel gjennom en kommandolinje (terminalen), et tekstredigeringsverktøy (Atom, Spacemacs) eller en skrivebordsklient (GitHub Desktop). Ønsker du å lære mer kan du lese om dette på de andre sidene du finner i menyen til høyre, men for en nybegynner anbefaler vi GitHub Desktop. Da den er en av de enkleste måtene å komme i gang med Git på.

Gå til Kodeklubbens GitHub, og klikk fork oppe i høyre hjørne. Da får du laget din egen kopi som du finner igjen på din egen github-side.

Arbeidsflyt i GitHub Desktop

Åpne GitHub Desktop og logg inn. Klikk clone repository og velg oppgave-repoet du kopierte fra Kodeklubben. Da laster du ned en kopi av denne til datamaskinen din. Det er denne vi skal jobbe i videre. Merk deg hvor denne blir lagret!

Lage en branch

For hver ting du vil gjøre i Git er det ryddig å lage en ny branch. Dette er en uavhengig del av din egen fork du kan jobbe i. Endringer du gjør her påvirker ikke andre branch-es du har laget, og heller ikke master-branch-en din før du er klar for at den skal gjøre det. Den bør ha et beskrivende navn på stikkordsform, for eksempel navnet på oppgaven du skal skrive. Slik blir det enklere for deg å holde styr på endringene du gjør, og det er enklere for den som skal se over og merge å kontrollere at ting er gjort riktig.

Du kan trykke ctrl + shift + N for å lage en ny branch. Hvis du foretrekker klikk og skriv kan du finne Branch i menylinjen øverst og velge New branch.... Skriv inn navnet og klikk Create branch. Pass på at nye branch-er lages ut fra master, slik at du alltid tar utgangspunkt i det som faktisk er den oppdaterte versjonen i repo-et.

Nå er du klar til å opprette eller endre filer. Åpne tekstbehandlingsprogrammet du vil jobbe i, for eksempel Atom. Der kan du legge til oppgaver-mappa, som er den lokale kopien av fork-en din, som et prosjekt. Da har du alle mappene og filene du vil jobbe med lett tilgjengelig.

For å unngå problemer i neste steg bør du alltid ha oppdatert master-branch-en din når du oppretter en ny branch. Dette ser du en beskrivelse av lengre ned på denne siden.

En god branch

Vi bør gjøre så lite som mulig i hver branch eller pull request. Da er det lett å se hva som er gjort og unngå at det sniker seg inn feil.

Gode navn på brancher:

  • scratch-ny-felix-herbert

  • elm-ny-prov-i-nettleser

  • python-fiks-fargespill-lenke

En branch bør altså ha navn etter temaet for endringen.

Du kan endre navnet på branchen din med git branch -m <gammeltnavn> <nyttnavn>.

En god commit

Hver endring som sendes til branchen (det kan være endring av flere filer) kalles en commit. En commit bør være liten, men "koden skal kompilere", altså skal den være fullstendig i den forstand at den inneholder et minimum av det du ønsker å endre eller legge til. Det bør være mulig å komme tilbake til tidligere commits uten at alt er ødelagt, og se rekkefølgen ting er blitt gjort i.

En commit bør ha sammendrag etter hva som er gjort. Beskjeden du sender med en commit ser da slik ut:

Skrevet ny Elm-oppgave om HTML

Det er også mulig å utdype sammendraget. I så fall står sammendraget på første linje, og videre tekst skal skrives under én tom linje. En commit-beskjed med sammendrag og utdypende tekst ser slik ut:

Skrevet ny Elm-oppgave om HTML

Oppgaven bruker `elm-lang.org/try` til å vise hvordan vi kan gjøre
HTML-generering med Elm. Oppgaven gir innsikt i

- Hvordan HTML er strukturer som et tre
- Hvordan vi leser feilmeldinger
- Hvordan vi kan se på andre eksempler.

Lage en ny oppgave

Oppgavene er sortert etter kodespråk. For eksempel ligger Scratch-oppgaven "Astrokatt" i

oppgaver/src/scratch/astrokatt

sammen med alle tilhørende filer og alternative språk oppgaven er tilgjengelig på. For å skrive helt nye oppgaver lager du en ny mappe. Den skal ha samme navn som filen du skriver oppgaven i, noe kort og beskrivende. Pass på å ikke bruke mellomrom, men du kan markere orddeling med understrek.

Husk å lagre filene dine! Det er alltid kjedelig å miste arbeid du har gjort fordi du glemte å lagre. Før du kan gå videre på neste steg må alle filene du vil sende fra branch-en din være lagret.

Push og pull request

Når du har lagret en ny fil i en branch vil du commit-e den slik at den legges til lokalt, og push-e for å sende den til fork-en din. Det gjør du i GitHub Desktop.

Til venstre har du en oversikt over alle filene som er endret i branch-en du jobber i. Nederst er en boks der du kan skrive et sammendrag av hva du har gjort, for eksempel Laget ny oppgave om en katt i verdensrommet. Om du ønsker å skrive litt mer kan du gjøre det i boksen under. Trykk Commit to [navn på branch] og vent til det er gjort.

Så trykker du ctrl + P for å push-e. Hvis du foretrekker å klikke kan du finne Branch i menylinjen og velge Push eller bare trykke Publish branch øverst i midten på skjermen. Nå blir det sendt til din fork på nettet, og sammenlignet med det originale repo-et.

Gå til Kodeklubbens GitHub. Der ser du at det har kommet opp en ny linje om at du har noe å legge til denne versjonen. Til høyre er det en grønn knapp med Create pull request. Trykk på denne. Du blir sendt videre til en PR der teksten du skrev for commit-en din er lagt inn allerede. Denne kan du endre eller la stå som den er. Rull deg ned til du finner en grønn knapp med Create pull request igjen og trykk på den.

Du har sendt en PR til repo-et! Nå er det bare å vente til en administrator kommenterer eller godkjenner. Om du ikke har slått det av får du e-postvarsel, så du trenger ikke følge med selv.

Holde fork-en oppdatert

En del av poenget med å ville jobbe i Git er at flere kan jobbe sammen. Da må du også huske på å oppdatere din egen fork med jevne mellomrom, slik at du har den nyeste versjonen av prosjektet. På GitHub-siden for fork-en din kan du se om det står This branch is NN commits behind kodeklubben:master. I så fall kan det være på tide å oppdatere. Dette gjør du helt enkelt i GitHub Desktop.

  • Åpne programmet, og sørg for at du er i master-branch-en.

  • Trykk på knappen som viser Fetch origin øverst i midten av skjermen. Vent til dataene er lastet ned. Det skal stå når du sist gjorde dette.

  • Så trykker du ctrl + shift + P for å pull-e dataene til din lokale versjon, altså å slå sammen din master med den oppdaterte felles master-branch-en. Alternativt finner du Repository i menylinjen og Pull under denne.

  • Til slutt vil du push-e denne oppdaterte versjonen til din fork på nettet med ctrl + P. Alternativt finner du Repository i menylinjen og Push under denne.