Göm menyn

TDDE10 Objektorienterad programmering i Java

Liten guide för att komma igång med Git

På den här sidan samlar vi ihop lite tips för att komma igång med versionshanteringssystemet git. Inget av det som tas upp här examineras, men det kan underlätta och snabba upp arbetet.

Skapa git-projekt

För att skapa ett nytt projekt i git kan du följa följande guide:

I din browser navigerar du till https://gitlab.liu.se. Det finns andra tjänster som tillhandahåller git-tjänster, men vi rekommenderar att ni använder universitetets.
Logga in med LiU-id som vanligt.


Välj new project.


Välj här förslagsvis blank project om du inte har ett existerande gitprojekt du vill importera. Du kan lägga till filer i ditt blanka projekt, importera projekt gäller alltså bara er som jobbat med git tidigare.


Du får upp denna ruta. Fyll i ett namn på projektet. Se till att projektet är privat, och tryck på create project.


Lägg till medlemmar

Ofta när man har ett gitprojekt vill man lägga till andra medlemmar. I ert projekt vill ni förmodligen bjuda in er partner och vi vill dessutom att ni lägger till er handledare/assistent. Logga in på https://gitlab.liu.se. Klicka på ditt projekt.
I menyn till vänster håller du musen över "Manage" så får du en rullgardinsmeny som kommer fram. Där väljer du "Members".


Du bör ha fått upp denna skärm. Välj "Invite Members".


Fyll i LiU-ID eller sök efter namn på den du vill bjuda in. Välj sedan roll (developer eller maintainer om vederbörande ska kunna titta på och ändra i projektet), tryck sedan på invite.


Lägg till SSH-nyckel (görs en gång per dator)

Om du vill slippa lösenord kan du välja att identifiera via SSH-nyckel. Denna nyckel är unik för varje dator du använder. Din inloggning på IDA (vare sig du sitter i SU-sal, via SSH eller ThinLinc) räknas som en och samma dator, så du behöver bara göra detta en gång för samtliga av dessa system.

Gå till https://gitlab.liu.se/help/user/ssh#generate-an-ssh-key-pair. Följ instruktionerna för RSA under rubriken "Generate an SSH key pair". Kortfattat: copy paste det som står i rutan (rödmarkerat) till din terminal:
ssh-keygen -t rsa -b 2048 -C ""
Ersätt "comment" med exmpelvis "min liuinloggning" eller "min hemdator", något som hjälper dig identifiera nyckeln. Tryck sedan enter. Tryck enter på alla frågor du får. Du behöver inte mata in något.
När det är klart kör du:
cat ~/.ssh/id_rsa.pub
Du bör få ut något i stil med:
ssh-rsa OHOSdjajoidsjmSAHDodskqod (en lång rad bokstäver och siffror) avslutat med den kommentar du gav ovan (ex. min hemdator).
Kopiera hela denna utskrift (från och med ssh-rsa till och med din kommentar).

Logga in på https://gitlab.liu.se. Där går in på din profil (den lilla rosa knappen), och preferences.


Tryck på "SSH keys" i menyn till vänster.

Klistra in nyckeln du nyss kopierade i den stora rutan. Du kan ta bort expirationsdatum om du vill. Tryck sedan på "Add key".

Klart! Du har nu lagt till din privata nyckel från datorn du använder och kan använda git utan att ange lösenord varje gång.

Klona (hämta) projekt

När du ska jobba med ditt projekt för första gången behöver du klona det till din dator. Ställ dig i en lämplig mapp. Om du exempelvis vill ha projektet tillsammans med dina andra projekt i kursen går du till din workspace mapp via terminalen.
Ex.
cd TDDE10
Öppna browsern och logga in på https://gitlab.liu.se. Klicka på ditt projekt.

Klicka på knappen "Clone Project", och kopiera SSH-varianten om du har gjort en SSH-nyckel, välj HTTPS om du föredrar att identifiera dig med lösenord varje gång du gör push/pull/clone. Gå tillbaka till din terminal. Där kör du:
git clone länkenDuNyssKopierade
Du bör få en respons som liknar den nedan.
Ex:


Om vi kör ls i terminalen kan vi se att vi har hämtat projektet:


Du kan nu jobba med dem som du är van vid.

Lägg till mitt klonade projekt i Eclipse

Vi har nu skapat och klonat ett projekt. Vi vill så klart lägga till det i Eclipse så att vi kan börja jobba. Högerklicka under dina existerande projekt i Eclipse och välj: "New" -> "Java Project".

På denna skärm kallar vi vårt projekt exakt samma sak som mappen vi just fick hem från git. Om det redan fanns filer i projektet kommer de att dyka upp här också. Klart att börja jobba!

Git-kommandon

Git är betydligt mer komplext än vad vi går igenom inom ramarna för denna kurs. Om ni delar upp arbetet på lämpligt vis (ex. Student1 jobbar i paket1, Student2 jobbar i paket2, eller ni delar upp specifikt vem som jobbar i vilka filer) bör ni klara er utmärkt med add, commit, push, och pull.

För samtliga kommandon måste vi gå till vår projektmapp i terminalen.
Ex:
cd TDDE10/spelprojekt

Add

När vi har gjort en ny fil, eller ändrat i en fil, vill vi lägga till den som ny version. Vi gör detta med git add.
Ex:
git add MinKlass.java
Vi kan lägga till godtyckligt många filer:
git add MinKlass.java MinAndraKlass.java Main.java
Vi kan även köra flera git add i rad om vi vill. När vi har lagt till allt vi vill ha i vår nya version måste vi göra en commit.

Commit

Vi har gjort git add på en eller flera filer där vi antingen har skapat nya klasser eller gjort ändringar. Nu vill vi skapa en ögonblicksbild över det vi har tagit med. Det gör vi med git commit.
Ex:
git commit -m "Beskrivande meddelande"
Här ger vi ett meddelande som beskriver det arbete vi har gjort. Vi kommer att få en respons i terminalen med vilka filer som ändrats och hur många rader som lagts till respektive tagits bort.



Denna ögonblicksbild vill vi skicka till gitservern. Det gör vi med git push.

Push

Vi har gjort en/flera commits (ögonblicksbilder) och vill skicka dessa till servern så att både vi själva och eventuella medarbetare/kompisar/... kan ta del arbetet vi har gjort. Detta gör vi genom att skriva git push i terminalen:
git push
Responsen vi får indikerar att allt har gått bra och beskriver hur många filer osv som påverkas.
Ex:


Om vi inte får en OK respons likt i bilden ovan finns det sannolikt något på servern som vi inte har hämtat hem ännu. Det måste vi ta hem först, och det kan vi göra med git pull.

Pull

Vi har gjort ändringar i projektet på annan dator, eller projektkompisen har gjort ändringar som vi vill hämta. Under förutsättning att du inte har gjort ändringar i samma filer som din kompis ska det gå utmärkt att köra kommandot git pull i terminalen:
git pull


Allt bör ha gått utmärkt, under förutsättning att arbetet har varit uppdelat på ett bra vis. Har ni däremot jobbat i samma filer kommer det att kunna uppstå en merge-konflikt

Merge-konflikt

Eftersom vi hade glömt dela upp arbetet har vi jobbat och modifierat samma filer och en merge-konflikt har uppstått. Det finns några olika sätt att lösa detta. Vissa klarar git att lösa själv, andra behöver handpåläggning. Vi kan antingen lösa det enligt föreläsningsslidesen genom att ta bort konfliktmarkörer osv, eller döpa om de berörda filerna temporärt och sammanföra ändringarna manuellt. Det smidigaste är att undvika att skapa merge-konflikter genom att dela upp arbetet.


Sidansvarig: Magnus Nielsen
Senast uppdaterad: 2024-01-09