Managed ad

Börja använda git - en snabb introduktion

Av Pontus, 22 februari, 2015

Här har vi en kort och enkelt guide för att snabbt komma igång och börja använda och förstå git. Hur git fungerar och allt sådant går vi inte igenom här utan här är det enbart en snabb genomgång i hur man installerar och börjar använda.

Först installerar vi Git i Ubuntu

Använd packethanteraren, skriv bara

sudo apt-get install git

Så installeraras allt och du är redo att ställa in basuppgifterna som behövs om du ska synkronisera mot någon server.

Inställningarna kan sparas på lite olika ställen, vilket ställe man ska lägga inställningarna beror på hur övergripande man vill att de ska vara. Följande tre platser finns och inställningarna läses in i den här ordningen.

  1. /etc/gitconfig
  2. ~/.gitconfig eller ~/.config/git/config
  3. config i git katalogen för projektet.

Först läses alltså den eventuella gitconfig filen i /etc, inställningarna i den filen gäller samtliga användare på datorn. Därefter går git till din hemkatalog och läser in de inställningarna för att slutligen läsa in inställningarna i projektet som du arbetar med för stunden. Det betyder att du kan bestämma om inställningarna ska gälla för alla projekt eller bara för nuvarande projekt.

Genom att lägga till --system när vi ställer in inställningarna så läggs inställningen i det första alternativet, /etc. Om vi istället lägger till --global så skrivs inställningarna i din hemkatalog. Anger vi ingenting så gäller de bara det nuvarande projektet.

Nu ställer vi in vårat namn, mailadress samt vilken editor som vi vill använda och lägger till det i våran profil genom att ange --global. Editorn i det här fallet är alltså inte nödvändigtsvis den vi använder när vi kodar utan det är den som git ska använda när vi ska skriva in kommentarerna vid commit.

git config --global user.name "Mitt namn"
git config --global user.email User@example.com
git config --global core.editor joe
git config --global push.default simple

En förklaring kan nog behövas på "push.default simple". Det finns två alternativ, simple och matching. Om vi använder matching så trycks alla brancher till server, vilket inte alltid är önskvärt om ni är flera som jobbar med ett projekt. Då kommer alla dina lokala brancher att synkas med servern och mergas. Om man istället använder simple så kommer endast branchen som du jobbar med just nu att synkas. Gör man inget aktiv val så kommer git att klaga över att du inte har gjort något val och använda simple. 

Sen kan vi testa om inställningarna har sparats genom att skriva

git config --list
Och resultatet följer
user.name=Mitt namn
user.email=user@example.com
core.editor=joe
push.default simple

Nu har vi inte ställt in så många olika inställningar men det kan hända att man ser samma värde flera gånger, det kan hända om vi använder oss av flera olika konfigurations filer. Det är då det sista värdet som används enligt listan lite längre upp.

Vill man bara sett ett värde så skriver man "git config nyckel" som exempel.

git config user.name

Nu är vi redo att börja med projekt.

Kopiera ett befintlig Git projekt

När vi har ett befintligt projekt som är sparat som vi ska hämta från GitHub/Gitlab så klonar vi den över ssh med nedanstående kommando. Om du ska ansluta till din egan Gitlab server så är användaren git och du måste ha installerat certifikat på din användare för att det ska fungera.

git clone git@gitserver:/url/to/project.git

Vill du istället synkrionisera över http/https så är kommandot, du kommer då att få ange ditt användarnamn och lösenord.

git clone https://gitserver/usr/to/project

Fast nu skapar ju git en ny katalog för projektet, men om du vill placera projektet i en befintlig katalog då? Då lägger du bara till sökvägen till katalogen efter serveradressen.

git clone user@gitserver:/url/to/project.git /home/user/katalog/

Observera att den katalogen måste vara tom annars kommer git att säga ifrån.

Skapa ett nytt git projekt

För att skapa ett nytt projekt i git så går du till katalogen som innehåller projektet och skriver

git init

Ofta så finns det kanske filer som man inte vill ha versionshantera, till exempelt backup filer från texteditorn. För att ignorera dem så skapar en .gitignore fil i projektmappen och lägger till filer eller filnamnsyntaxen som vi vill använda. Mer info om det på nästa sida.

När vi kodar så skapar vi sedan filer som ska versionhanteras, för att lägga till alla filer som finns i katalogen till git så skriver vi

git add .

Vill du bara lägga till en fil så kan du istället för en punkt skriva filnamnet.

Nu ligger alla filer redo att bli commitade till git, för att genomföra en commit skriver vi.

git commit -m "Initial commit"

Med -m så anger vi en kommentar till commiten direkt, om vi skippar -m så kommer git istället att starta din valda textredigerare och du får skriva informationen där istället.

Första gången vi gör en commit så kommer git att skapa en "master" branch, det kan vara en bra ide att skapa nya brancher när arbetar och ha till exempel en branch för varje bugg eller varje ny funktion. Det är så enkelt att merga och arbeta med brancher så det är värt det.

Man kan skippa staging steget, git add filnamn, genom att lägga till ett -a när man commitar.

git commit -a -m "Fixat utskriftsfunktionen"

 Då blir det ett kommando mindre att skriva, men beroende på hur man arbetar så kan det vara en fördel att köra add separat. Lite av en smaksak hur man arbetar.

Skapa en lista med filer att ignorera

Vissa filer vill man inte att git automatiskt ska lägga till eller ens visa varning om att de inte är med. Till exempel log filer eller texteditorns backup filer. För att tala om för git vilka filer den ska ignorera så skapar vi en fil .gitignore i arbetskatalogen, i den lägger vi till filnamnen.

I gitignore filen kan man använda följande tecken.

# allting på raden ignoreras, bra till kommentarer

/ i slutet av namnet indikerar att det är en katalog

* matchar ingen flera tecken

? matchar en bokstav

[abcd] matchar alla bokstäverna som finns innanför hakarna, a, b och c i det här fallet.

[a-d] matchar alla bokstäverna som finns mellan a och d.

Arbeta mot en GitLab server

För att kopiera och ha en kopia av allt arbete på en gitlab server så måste vi ställa in vilken server vi ska använda. Vid kloning av befintliga projekt så ställs det in samtidigt som den klonar men om du startar ett nytt lokalt projekt så måste vi lägga till en server till projektet innan vi kan synkronisera. För att lägga till server gitlab.exemple.com som origin så skriver vi följande i git projektmappen

git remote add origin git@gitlab.example.com:user/mitt-projekt.git

Innan vi kan kopiera upp koden till gitlab server måste vi först bestämma att 

Nu kan vi kopiera upp vårat projekt mot gitlab servern.

git push origin master

När man sedan arbetar med koden och kanske någon annan har gjort ändringar som vi inte har i den lokal kopian så måste vi först hämta den senaste versionen från servern

git fetch origin master 

Därefter måste man merga för slutligen göra en push enligt ovan för att publicera senaste versionen på servern.

Lathund över kommandon

 

git init

Skapar ett nytt git projekt

git status

Kontrollerar statusen, är alla filer commitade och uppdaterade.

git add

Lägger till en eller flera filer till nästa commit

git commit

Skapar en commit

git branch

Listar alla brancher som finns i projektet

git branch namn

Skapar en ny branch med namnet "namn"

git branch -d namn

Tar bort den lokala branchen som heter "namn"

git branch -a

Listar alla brancher både lokala och på servern

git branch -r

Listar alla brancher på servern

git checkout namn

Växlar branch till branchen som heter "namn"

git checkout -b namn

Skapar en ny branch med namnet "namn" och växlar till den. Den här är alltså en kortare version av de två ovanstående kommandona.

git remote add origin https://git.example.com/user/rep.git

Lägger till ett ny fjärrprojekt

git push origin

Skickar upp alla ändringar till servern origin

git push origin --delete namn / git push origin :namn

Tar bort branchen som heter "namn" på servern origin

git fetch origin

Hämtar senaste versionen från servern origin.

git fetch -p 

Synkar med servern och tar bort alla lokala brancher som inte finns på servern

git pull

Kopierar senate från servern och mergar med din lokala branch. I princip så görs en git fetch följt av en merge

git stash

Stashar (sparar) alla filer som inte är commitade eller i staging. Bra om man håller på med en sak och så kommer man på att man vill skapa det i en egen branch istället. När man vill lägga till det i en annan branch istället så skriver man git stash och byter/skapar branch därefter skriver man git stash apply.

git stash apply

Hämtar tillbaka filerna som man har stashat/sparat och genomför de ändringarna som man de innehåller till de aktuella filerna.

 

Kategorier

Managed ad