Hoppa till innehåll

Branch

En egen utvecklingslinje i ett repository, där man kan göra ändringar utan att påverka huvudversionen.

Kallas även
gren, utvecklingsgren
Kategori
Git

Enkel förklaring

En branch, på svenska gren, är som att ta ett sidospår. Du kan prova en ny idé, skriva en ny lektion eller rätta ett fel på din egen gren, medan huvudversionen fortsätter att fungera som vanligt.

När ändringarna är klara och granskade förs de in i huvudversionen. Det kallas merge. Blev idén inte bra kan grenen bara tas bort.

Huvudversionen är också en gren. Den heter oftast main.

Teknisk förklaring

En branch i Git är en flyttbar pekare på en commit. När man gör en ny commit på grenen flyttas pekaren fram till den nya commiten. Att skapa en gren går därför snabbt och tar nästan ingen plats: ingenting kopieras.

Flera grenar kan utgå från samma commit och sedan utvecklas åt olika håll. Man växlar mellan grenar med git switch, och filerna i arbetskatalogen ändras då till grenens version.

Praktiskt exempel

$ git switch -c ny-lektion
Switched to a new branch 'ny-lektion'

I Kodkollektivet Academy görs varje ändring på en egen gren. Grenen granskas i en pull request innan den förs in i main. Ingen kan skriva direkt till main, eftersom den är skyddad.

När och varför används det?

Grenar används för att hålla isär arbete som pågår samtidigt. Två personer kan arbeta på var sin gren utan att störa varandra. Huvudgrenen kan hållas i ett läge som alltid fungerar, eftersom bara granskade ändringar förs in där.

Rekommendation:

  • En gren per uppgift, med ett namn som säger vad den gäller, till exempel rätta-stavning-modul-3.
  • Håll grenarna kortlivade. Ju längre en gren lever, desto större blir risken för konflikter när den ska föras ihop.

Vanliga missförstånd

  • “En gren är en kopia av alla filer.” Nej. En gren är bara en pekare på en commit. Filerna kopieras inte.
  • “Tar man bort en gren försvinner arbetet.” Inte om grenen redan har förts in med merge. Då finns alla commits kvar i huvudgrenens historik.
  • “main är något annat än en gren.” Nej. main är en vanlig gren, som man har kommit överens om ska vara huvudversionen.

Relaterade begrepp