Parprogrammering med git og github

Versjon 0.2.3

Til n? har du sikkert brukt en form for versjonsh?ndtering, enten p? studier eller jobb. Du har kanskje jobbet med en semesteroppgave og laget flere kopier av innleveringen din som du har gitt forskjellige navn (semesteroppgave1.docx, semesteroppgave1_versjon2.docs, semesteroppgave1_versjon3.docx), okei, du ser nok allerede at dette blir veldig mange filer og versjoner av denne filen ? holde styr p?. Det burde da finnes en bedre m?te enn dette?

Og ja, det gj?r det! En l?sning p? dette er ? bruke git. Git er ett system for versjonskontroll kan holde styr p? mange forskjellige versjoner, og varianter av koden din, git kan ogs? gj?re s? mye mer! Men for v?rt form?l ?nsker vi hovedsakelig ? bruke det for ? kunne lagre filene vi har lokalt p? uio sin github,

Dette er en introduksjon til en arbeidsflyt for parprogrammering med versjonskontrollsystemet git og hosting-l?sningen github.

Intro til git og github

Vi starter med ? sette opp ett repo p? github.uio.no og setter s? opp lokalt utviklingsmilj? med git. Videre fors?ker vi ? l?re oss de mest grunnleggende operasjonene vi trenger:

  • Lage en versjon med git (add, stash, commit)
  • laste opp filer til github (push)
  • laste ned filer fra github (fetch, pull, merge)

Gj?r stegene som st?r her underveis.

Vi starter med ? g? inn p? github.uio.no, der logger vi inn med v?rt uio-brukernavn og passord.

Opprette ett repo p? github.uio.no

New Repository knapp

 

?verst til h?yre n?r vi er innlogget ser vi ett ikon og ett "pluss"-symbol, trykk p? dette, s? "New repository".

 

 

 

Vi blir n? sendt til en side der vi kan opprette ett nytt github-repository, dette er lagringsomr?det v?rt. Her er det spesielt viktig at dere setter at repoet skal v?re "Private". (se bildet). Dere kan ogs? markere boksen med README og legge inn en gitignore for Java (dette gj?r at du slipper .class-filer i repoet). Trykk p? "Create repository" n?r du har fylt inn informasjonen.

Vi blir n? sendt til "hjemmeomr?det" til repoet v?rt, her vil alle filene vi har lastet opp til github ligge. Vi g?r n? videre til ? sette opp git i v?rt lokale utviklingsmilj?.

Legge inn repo lokalt

I dette steget benytter vi ett GUI-program som heter github desktop, dette kan lastes ned via desktop.github.com. Det finnes terminalbaserte varianter av git og andre programmer som har mer funksjonalitet. For v?rt bruk n? holder github desktop. Last ned og ?pne github desktop.

N?r du har lastet ned github desktop, velg "Sign in to Github Enterprise". Skriv inn github.uio.no p? neste vindu, logg s? inn med uio-brukernavnet og passordet ditt. Trykk deg videre til du kommer til vinduet p? bildet under

Velg repoet du nettopp opprettet, trykk s? clone. Dersom du vil endre hvor repoet blir lagret p? din maskin, endre Local-path til en mappe der du vil at filene dine skal ligge. Du trenger ikke ? gj?re dette n?. Trykk Clone igjen. Du har n? lastet ned (clonet) en lokal kopi av repoet til din egen maskin.

 

 

Klikk ?verst til venstre i vinduet, h?yreklikk p? det aktuelle repoet. Der kan du velge ? enten ?pne mappen til repoet i en filutforsker eller en editor du foretrekker.

Legge til en versjon av koden

Vi kan legge til alle slags filer i git, de vi vanligvis vil lagre er programkoden v?r (.java-filene), vi kommer n? til ? bruke en .txt-fil men det hadde v?rt samme steg om vi hadde brukt en hvilken som helst annen type fil (f.eks. .java-filer).

Lag en ny tekstfil i mappen der du lagret repoet lokalt. Kall denne minforstecommit.txt i denne filen putter du inn teksten.

Dette er min f?rste commit.

Lagre filen og g? tilbake til GitHub desktop.

N? har det skjedd litt mer her.

I boks 1 ser vi hvilke filer som er endret, her har vi opprettet minforstecommit.txt, vi ser at boksen ved siden er krysset av. Dette betyr at vi vil "adde" denne versjonen av filen til v?r "versjon".

I boks 3 ser vi endringen som er gjort i den aktuelle filen, gr?nne linjer betyr legget til, r?de betyr fjernet.

I boks 2 bestemmer vi commit-meldingen v?r, dette er info om hva vi har gjort i denne "committen" (versjonen), skriv en liten beskjed og trykk "Commit to master" for ? legge til en versjon.

 

Denne versjonen er kun lagret lokalt n?. For ? f? den p? GitHub-serveren trykk p? "Push origin". G? inn p? github.uio.no og se at filen n? ligger der.

 

Velg filen i nettleservarianten, trykk p? blyanten, endre ordet f?rste til andre og commit to master. 

G? tilbake i GitHub Desktop og trykk p? "fetch origin" (hente status fra server), du kan n? laste ned endringene til din lokale maskin med ? trykke pull origin. Se at filen har oppdatert seg lokalt.

 

N?r du jobber i ett lite team p? obligen

Vi har n? g?tt igjennom noen grunnleggende steg og oppsett ved bruk av git og GitHub. Flyten n?r vi driver med parprogrammering i team kan v?re

  1. Fetche og "pulle" nyeste versjon fra server
  2. Jobbe p? én maskin n?r dere parprogrammerer
  3. Adde og committe endringen i koden dere har gjort
  4. Laste opp koden til server (Push origin)

Dersom to forskjellige brukere har endret p? samme fil og begge pr?ver ? pushe til origin vil en av de f? noe som heter en merge conflict. Dette kan stort sett unng?s med ? strengt f?lge stegene over.

Dersom du ?nsker ? legge til brukere som kan ?collaborate? p? prosjektet ditt, g?r du inn p? github.uio.no, velger repoet, g?r til settings, deretter collaborators og taster inn uio-brukernavnet til personen du ?nsker ? legge til.

Dersom du ?nsker ? laste ned ett repo du har funnet p? uio sin github eller er blitt invitert til, g? inn i repoet i nettleseren, trykk p? code, s? open in github desktop.

Dersom man ?nsker ? benytte seg av mer avanserte arbeidsflyter med git kan det l?nne seg ? sette seg inn i branchespull-requests og code reviews. En avansert arbeidsflyt er f.eks git feature branch

H?ndtere merge-konflikter i GitHub desktop*

Av og til glemmer vi ? f?lge stegene, eller s? velger vi ? ikke gj?re det. Da kan det hende at vi m? h?ndtere en merge-konflikt. Vi pr?ver n? ? konstruere en slik for ? l?re oss ? h?ndtere det

  1. Endre filen minforstecommit.txt p? github.uio.no (eller fra en annen maskin), commit og legg til i master p? origin (server)
  2. Endre filen minforstecommit.txt lokalt p? din maskin (ikke pull eller fetch), erstatt ett av ordene til "neinei" og lagre.
  3. Commit og trykk push origin, du kan da f? beskjed om ? fetche og pulle, gj?r dette.
  4. Du vil n? f? opp en feil som sier "resolve conflicts before..."

du kan her velge ? ?pne filen som skaper konflikt i din foretrukkede editor (f.eks. visual studio code). 

Hvordan editoren velger ? "visualisere" med farger og hjelpemidler for ? godta/avsl? varierer. Det viktigste er ? f? med seg at det som ligger mellom <<<<HEAD og ==== er din endring, mens det som ligger etter === til >>>> er endringen som l? p? server og er i konflikt med din. Vi kan her velge ? godta at vi ?nsker ? bruke v?r lokale endring med ? enten slette den innkommende delen og <<< HEAD i starten. Det letteste her er ? trykke p? "Accept Current Change" for ? bruke v?r lokale endring. Man kan ogs? manuelt sette sammen endringene, om begge skal med.

 

N?r du har ryddet opp i konflikten, lagre filen og g? tilbake til Github Desktop. Trykk s? commit merge. Du kan n? pushe til origin og den nye endringen vil ligge i repoet p? uio sin github.

Vil du pr?ve deg p? ett enkelt java-eksempel?

Se p? dette eksemplet (h?yreklikk for ? laste ned)

Har du lyst ? vite mer om versjonskontroll?

Se p? denne videon om versjonskontroll fra IN3110

Bruk dokumentasjonen til github:

Eller se p? denne siden fra ett annet kjent universitet.

For avansert bruk av git anbefaler jeg heller ? bruke ett terminalbasert program eller ett annet gui-program kalt sourcetree. Svar gjerne p? dette nettskjemaet om du ?nsker en mer i dybden gjennomgang med mer avanserte funksjoner til git og arbeidsflyt i team.

 

Har du noen sp?rsm?l eller kommentarer til denne teksten, send de til sondrbw@uio.no

 

Av Sondre Bader Wang
Publisert 22. feb. 2021 10:08 - Sist endret 5. mars 2021 11:16