Kom igång
Kom igång med dina äventyr med hjälp av Git!
Vad och varför?
Vad är versionhantering?
Versionhantering är en process som används för att hantera och spåra ändringar i källkod och andra filer över tiden. Det är ett verktyg som används främst inom mjukvaruutveckling men kan även vara till nytta för att hantera ändringar i andra typer av dokument, som textdokument eller konfigurationsfiler.
Versionhanteringssystem (VCS) gör det möjligt för utvecklare att spåra och hantera ändringar i sina projekt över tiden. Det ger också möjlighet att återställa tidigare versioner av filer och samarbeta med andra utvecklare på ett organiserat sätt.
Centraliserade versionhanteringssystem (CVCS):
I ett CVCS finns det en central server som lagrar alla filer och deras historik. Utvecklare checkar ut filer från servern för att göra ändringar och checkar sedan in dem igen för att spara ändringarna till servern.
Distribuerade versiohanteringssytem (DVCS):
I ett DVCS har varje utvecklare en komplett kopia av hela projektets historik på sin lokala maskin. Detta gör att utvecklare kan arbeta offline och göra ändringar utan att vara anslutna till en central server. Ändringarna kan sedan synkroniseras och delas med andra utvecklare vid behov.
Vad är Git?
Git är ett DVCS som utvecklades av Linus Torvalds för att hantera den enorma källkoden till Linux. Git lämpar sig väldigt väl till open source utveckling eftersom utvecklarna inte är beroende av en central server. Git är utformat för att vara snabbt, effektivt och skalbart för både små och stora projekt. Det tillåter flera utvecklare att samarbeta och spåra ändringar i en källkodsbas eller vilken annan typ av filstruktur som helst.
Varför Git?
Som ett exempel:
Ni ska bygga en hemsida, du och dina kurskamrater, som en del av webutvecklingskursen. Ni börjar med att bygga varsin sida i HTML och CSS. Men sen när det kommer till att få sidorna att fungera med varandra blir det helt plötsligt väldigt, väldigt jobbigt. Du och din kompis har gjort helt olika med era klasser och hur era knappar fungerar.
Git är menat att skapa en gemensam grund för alla inblandade. Förändringarna som dina klasskamrater gör behöver oftast du också. Om din kompis redan har gjort en knapp som är snygg kan du bara kopiera den, istället för att uppfinna hjulet igen.
Installera Git på datorn
Windows
För att installera Git på en Windows-dator kan du följa dessa steg:
-
Besök Git:s officiella webbplats (https://git-scm.com) och klicka på "Download for Windows" (Ladda ner för Windows).
-
Detta länkar dig till nedladdningssidan. Klicka på den nedladdningsbara filen som matchar din Windows-version (32-bit eller 64-bit).
-
När du har laddat ner installationsfilen, dubbelklicka på den för att starta installationsprocessen.
-
Du kommer att bli ombedd att välja installationsalternativ. Här kan du välja att ändra installationsmappen eller använda standardinställningarna. För de flesta användare är standardinställningarna tillräckliga, så du kan fortsätta genom att klicka på "Next" (Nästa).
-
Välj "Components" (Komponenter). Här kan du välja vilka delar av Git som du vill installera. För de flesta användare är standardinställningarna lämpliga. Du kan fortsätta genom att klicka på "Next" (Nästa).
-
I nästa steg väljer du "Adjusting your PATH environment" (Justera din PATH-miljö). Här kan du välja om Git ska läggas till i systemets PATH-miljövariabel, vilket gör att du kan använda Git från kommandotolken. Det är vanligtvis en bra idé att välja alternativet "Git from the command line and also from 3rd-party software" (Git från kommandotolken och även från tredjepartsprogram). Klicka på "Next" (Nästa) för att fortsätta.
-
Välj "Use the OpenSSL library" (Använd OpenSSL-biblioteket). Här väljer du vilket SSL-bibliotek som Git ska använda för säkra anslutningar. Standardinställningen är att använda OpenSSL, vilket fungerar bra för de flesta användare. Klicka på "Next" (Nästa).
-
Välj "Line ending conversions" (Omvandling av radändelser). Här kan du välja hur Git ska hantera radändelser för textfiler. Standardinställningen är att låta Git automatiskt hantera det, vilket brukar fungera bra. Klicka på "Next" (Nästa).
-
Välj "Terminal emulator" (Terminalprogram). Här kan du välja vilket terminalprogram Git ska använda för att visa kommandotolken. Standardinställningen är "Use Git Bash only" (Använd bara Git Bash), vilket är en bra allroundterminal för Git. Klicka på "Next" (Nästa).
-
I det sista steget kan du välja att använda den interna Windows SSL-biblioteket. Detta är till valfri och standardinställningen fungerar bra för de flesta användare. Klicka på "Next" (Nästa).
-
Nu är du redo att installera Git. Klicka på "Install" (Installera) för att påbörja installationen.
-
Installationen tar några ögonblick och när den är klar kommer du att se ett installationsmeddelande. Klicka på "Next"
Debian & Ubuntu
sudo apt-get install git
SSH-nycklar i Git
Vad är SSH & en SSH-nyckel?
SSH står för Secure Shell och är ett nätverksprotokoll som gör det enklare att ansluta säkert till andra datorer, speciellt över ett osäkert nätverk. En SSH-nyckel är hur man krypterar och avkrypterar informationen, det gör datorn automatiskt. Med SSH-nycklar använder man oftast inte lösenord.
SSH-nycklar
En SSH-nyckel innehåller två delar, en privat och en publik del.
Den publika nyckeln (.pub
)
Den publika nyckeln är den delen av nycklen du delar ut till andra tjänster som ett "har du den här, kan du förstå mig"-kort. Den här nyckeln kan du fritt sprida till exempelvis Github eller vår egen GitLab för att autentisera dig.
Den privata nyckeln
Du ska aldrig dela med dig av den privata delen av din SSH-nyckel eftersom det är den delen av nyckeln som autentiserar att det verkligen är du som ansluter. Du kan identifiera den publika delen av din nycken som du kan dela med dig av för den har .pub
i slutet.
Skapa SSH-nyckelpar i Windows!
-
Öppna Powershell.
-
Skriv in
ssh-keygen
och tryck på enter. -
Följ sedan instruktionerna tills du ser bilden nedan.
Nu finns nyckeln i .ssh
i din användarmapp. (C:\Users\[användarnamn]\.ssh
) i filen id_rs.pub
Skapa en SSH-nyckel i Linux!
Det finns en mer detaljerad guide här som man kan följa, men den är på engelska.
Steg 1 - Skapa ett SSH-nyckelpar på den klienten du ska använda
I terminalen i Linux (eller ekvivalent WSL på Windows) skriver du in:
$ ssh-keygen -t rsa
Följ sedan instruktionerna som ges.
Du behöver inte ange en passphrase såvida du inte vill ha ett extra lager av säkerhet ifall någon skulle komma över din privata SSH-nyckel. Men då skulle du behöva ange din passphrase varje gång du vill koppla dig via SSH med din nyckel.
När du har gått igenom processen kommer du i ~/.ssh
återfinna två filer (eller flera om du har flera nycklar) en id_rsa.pub
och en id_rsa
(eller vilket namn du nu valt). Det är innehållet i id_rsa.pub
som du ska använda ifall du vill autentisera dig emot GitLab.
Använd SSH-nyckeln i Git
-
Gå in på git.ssis.nu och logga in. (Använd ditt Google-konton, elev@stockholmscience.se)
-
Klicka på “Edit profile”
-
Klicka på “SSH Keys”
-
Kopiera allt i filen
id_rsa.pub
som vi hittar i.ssh
i din användarmapp.C:\Users\ELEV-TAG\.ssh
eller i~/.ssh
i Linux -
Klicka sedan på “Add key".
-
Klistra in nyckeln i rutan och klicka på spara.
Nu har din nya nyckel registrerats på skolans GitLab och nu kan du klona och skicka upp commits till dina repositories via SSH.
Vad är Repository, Branch och Commit?
Repository
Ett repository är den huvudsakliga komponenten som spårar förändringar i ditt projekt. Den komponent hittar man under ./git
i roten av ditt projekt. Genom att titta på den här katalogen kan Git manipulera koden som du har valt att spåra. Tar du bort ./git
från ditt projekt förlorar du all spårning av ditt projekt i den instansen (om du har skickat förändringar till en server, finns de förändringarna som du skickat sparade där).
Ett repo kan vara både lokalt på din maskin eller online på en server (remote) som https://git.ssis.nu/ och https://github.com/ du synkar dem genom push- och pull-kommandon
Att spåra förändringar
När man skapar ett nytt Git repository måste du manuellt lägga till de filer som du vill spåra. Det kan vara rimligt att inte spåra alla filer i ditt projekt. Om du använder en IDE till exempel finns det vissa filer som automatiskt sparas, som inte är relevanta till din kod. Dessa filer kanske inte är nödvändiga i ditt repository.
Det vanligaste felet (som även professionella programmerare gör ibland) är att spåra förändringar av API-nycklar eller lösenord till databaser. Dessa får aldrig spåras, punkt.
För att förhindra att av misstag lägga upp filer som innehåller känsliga uppgifter kan du använda något som kallas .gitignore
. Det är en fil som berättar för Git att du inte vill spåra vissa filer eller kataloger. Du skriver helt enkelt namnet (och sökväg om det behövs) på filen på var sin rad.
Exempelvis:
.gitignore
/node_modules
/public/hot
/public/storage
/public/js
/public/css
/public/mix-manifest.json
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
docker-compose.override.yml
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
För att faktiskt spåra en förändring behöver du använda ett kommando (om du använder ett grafiskt gränssnitt är det här inte lika relevant) som kallas git add
(alla kommandon i git måste prefixas såhär: git kommando
).
du@dator:~/myFirstRepo$ git add minfil
Det innebär att git kommer börja hålla koll på den filen (om det är första gången). add
lägger även till en fil till en s.k. commit och då är den staged for commit.
Commit
En commit är det huvudsakliga verktyget som du som programmerare segmenterar dina förändringar i mindre delar med. Det kan verka tradigt och lite poänglöst men det kommer ge utdelning i längden för dig och ditt framtida team (som ibland, är dig själv fyra månader i framtiden).
En commit ska göras varje gång du gör en förändring. Inte varje sekund, eller varje minut (det är oftast inte rimligt). Men när du som programmerare väsentligt förändrar hur din kod fungerar ska du commita det. Det innebär att när du är klar med något som fungerar, bör du commita det. Den förändringen vill du spara, för då kan du återgå och titta på förändringarna över tid om något går fel eller om det inte fungerar lika bra som förut.
Om du förändrat många olika saker bör du separera förändringarna till sina domäner. Gör du en förändring i hur din användare fungerar och sen i din databas, bör dessa två förändringar vara i två olika commits. Det är inte rekommenderat att förändra många olika saker (som inte påverkar varandra) och lägga dem i samma commit.
Exempel:
Branch
Git använder sig av något som kallas branches (eller grenar) för att spåra förändringar. Huvudbranchen brukar kallas för main
(eller master
på aningen äldre system, läs mer här om varför). Det är det huvudsakliga projektet. Alla andra branches deriverar sin sanning från main
vilket innebär att när du skapar en ny branch gör du det från main oftast.
Branching är främst till för att hålla main-branchen i ett fungerande stadie. Målet är att kunna klona ditt repo och veta att koden som laddas ner faktiskt fungerar.
Därför skapar du branches för din egen utveckling. Säg att du behöver lägga till en funktion (eller feature) till ditt program eller tjänst. Istället för att börja ändra i main-branchen skapar du en ny branch från main för att bevara mains integritet. På den här nya branchen kan du commita dina förändringar, utan att påverka main direkt. Därefter förenar du dem (merge) och låter main absorbera den nya branchen.
Det är lite som en tågräls där ett tåg fortsätter rakt fram och ett annat tåg tar av till ett annat spår för att få ny last och sen förenar sig med det tidigare tåget lite längre fram:
I mindre skolprojekt kan det vara så att branching inte är särskilt nödvändigt. Men i framtiden om du och dina skolkamrater ska arbeta tillsammans på samma projekt, är git ett otroligt bra sätt att kommunicera och åtgärda fel i kod som skrivs av många personer samtidigt.