image

Introduktion

Versionshantering är ett sätt att hantera förändring av filer och spåra historik över tid. Ett versionshanteringssystem, som exempelvis Git, ansvarar för filerna i ett förvar. I ett Git-förvar lagras originalversionen av filerna som ett master set. Förvaret kan lagras lokalt eller på en server (exempelvis GitHub, Gitlab eller egenhostad lösning).

Fördelar med att använda versionshantering

Versionshantering är en styrka för dig, ditt team och/eller företaget. Det kommer med fördelar som:

  • Lättare samarbete; om vi har ett fjärrförvar kan flera jobba på samma projekt
  • Bättre redovisning; vem har gjort vad och varför
  • Arbeta isolerat; hämta hem en lokal version av förvaret
  • En back-up källa; om en bugg introduceras kan vi enkelt backa tillbaka till senast fungerande version

Om vi jobbar med versionshantering kan vi också arbeta effektivare med metoder som “continuous delivery/continuous deployment“ (CI/CD) och/eller processer som Infrastruktur som Kod (IaC).

Git

Git är, som tidigare nämnt, ett versionshanteringssystem och även det mest använda av sitt slag. Det utvecklades 2005 av Linus Torvalds (skaparen av operativsystemskärnan Linux).

Hur fungerar Git?

Git använder SHA-1 hashar för att referera till “commits“ och integritetskontroll av filobjekt; med dessa hashar bygger Git en trädliknande struktur av våra “commits“ för att enkelt lagra och hämta data. Sedan Git 2.29 finns det stöd för SHA-256, läs mer här.

image

Diagrammet visar flöden med Git. Källa: pushpankq @ GitHub

Kom igång med Git

För dig som inte har Git installerat, klicka här; välj rätt operativsystem och installera enligt instruktioner.

Gitlab

Jag kommer att använda Gitlab för att lagra mitt fjärrförvar och använder även SSH som transport alternativ.

Vi börjar med att klicka på “New Project“ knappen för att skapa förvaret.

Därefter får vi några alternativ för att skapa vårt nya projekt. Jag väljer “Create blank project“ för att börja tomt.

Jag har valt att sätta ett namn på mitt projekt, en beskrivning, att förvaret ska vara publikt och även bockat ur “README“ alternativet; vi vill själva initiera ett lokalt förvar för att pusha filer senare.

image

Git lokalt

Nu är det dags att konfigurera några globala Git variabler lokalt och vi vänder oss därför till ett terminalfönster; personligen använder jag Ubuntu som operativsystem.

image

git config --global user.name "Ditt Namn"
git config --global user.email "ditt.namn@mejl.se"

Detta är samma parametrar som Gitlab påminner oss om i det tomma projektet på Gitlab.

Eftersom att jag inte hade några lokala filer som skulle upp i fjärrförvaret har jag valt att snabbt skapa en mapp med en “README.md“ fil.

image

I “README.md“ har jag skrivit lite enkel text i markdown.

image

Därefter initierar jag ett Git-förvar i den lokala mappen och definierar branchen som “main“ eftersom att detta är Gitlabs standard. Sedan lägger vi till fjärrförvaret som ursprung.

image

git init --initial-branch=main
git remote add origin git@gitlab.com:"profil/ditt-projekt.git"

git add/remove

För att ändra på filer i vårt lokala förvar behöver förändringar i arbetsförvaret gå igenom “staging“ området innan det kan bli en “commit“. För att lägga till filer använder vi “git add“:

image

git add .
# eller
git add README.md

I detta fall hade båda specifikationerna fungerat; punkten definierar att alla filer i den aktuella mappen ska stageas.

Om du vill ta bort en fil från “staging“ eller arbetsförvaret kan vi använda oss av “git rm“ (s.k. ‘remove’)

git rm <file>

git commit

Nu när “README.md“ ligger i staging området är vi redo för att göra en “commit“ till det lokala förvaret.

image

git commit -m "lagt till README.md"

Parametern “-m“ gör att vi kan lägga till en kommentar (så kallad “commit log“) direkt i vår “commit“. Om vi inte lägger till kommentaren här kommer vår standard textredigerare att öppnas och Git ber dig att ange “commit log“ meddelandet. Tänk på att en “commit“ kommentar ska vara koncis.

git push

När vi har registrerat filen i vårt lokala Git-förvar kan vi driva vidare förändringen till fjärrförvaret. Detta gör vi med “push“ kommandot.

image

Jag behövde även ställa in upstreamen

git push

Om vi nu kollar i fjärrförvaret kan vi se min “commit“ och filen som jag lagt till.

image

Summering

I denna del har vi gått igenom vad versionshantering är, hur vi skapar ett fjärrförvar hos Gitlab och hur vi jobbar med Git; initierar ett lokalt förvar kopplat till vårt fjärrförvar och driver vidare våra lokala förändringar till fjärrförvaret. Klicka här för att komma till fjärrförvaret som jag använt i detta inlägg. I nästa del går vi igenom brancher, sammanslagningar och differenser.

Behöver ni hjälp eller vill veta mer om versionshantering, CI/CD eller infrastruktur som kod? Kontakta oss så visar vi er vägen till en modern arbetsstil!


Consultant


2025

Acebit expanderar

1 minute read

Acebit expanderar – automationsess från Dalarna öppnar i Stockholm

Back to Top ↑

2024

Acebit i Falu-Kuriren

less than 1 minute read

Även Falu-Kuriren har intresserat sig för Acebit och besökt oss i Falun!

Back to Top ↑

2023

Meraki API & Mgmt interface

4 minute read

Nyligen stötte jag på ett scenario som innebar att ca 200 Meraki-enheter behövde byta inställning från DHCP till statisk IP-adressering. Istället för att gör...

Arbeta med VPC Del3 - Konfiguration

3 minute read

I mina tidigare inlägg om virtuella port-channels kikade vi på vad det är och vilka delar de utgör. Det här avsnittet kommer beröra hur en grundkonfiguration...

Få upp farten med concurrency

3 minute read

Bakgrund Idag tänkt jag skriva några rader om att skriva concurrent kod, eller “samtidighet” om vi prompt ska översätta det till svenska. För att enklare för...

Back to Top ↑

2022

Back to Top ↑

2021

Back to Top ↑