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.
- /etc/gitconfig
- ~/.gitconfig eller ~/.config/git/config
- 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.