Branches og merge

En branch er en parallel version af din kode. Du arbejder på nye features i separate branches, så main altid forbliver stabil — især vigtigt i studiegrupper.

Hvad er en branch?

Forestil dig en tidslinje af commits. main er hovedtidslinjen — den version, der "tæller". En branch er en forgrening, hvor du kan eksperimentere uden at påvirke main:

main:     A --- B --- C --- F (merge)
               \
feature:        D --- E

Commit D og E lever på feature-branchen. Når featuren er færdig, merges den tilbage til main som commit F.

En branch er en parallel version af koden. Merge samler ændringerne tilbage i main.

Oprette og skifte branch

git checkout -b feature/jobliste   # opret og skift til ny branch
# ... lav ændringer ...
git add .
git commit -m "feat: tilfoej jobliste"

git checkout main                  # skift tilbage til main
git merge feature/jobliste         # merge feature ind i main

I GitHub Desktop: Branch → New branch, lav ændringer, commit, skift til main, klik Merge into current branch.

Branch-navne bør beskrive featuren: feature/login, fix/input-validering, docs/readme.

Merge og merge-konflikter

Merge kombinerer to branches. Git forsøger automatisk at flette ændringer — men hvis samme linje er ændret i begge branches, opstår en merge-konflikt:

<<<<<<< HEAD
Console.WriteLine("Hej main");
=======
Console.WriteLine("Hej feature");
>>>>>>> feature/jobliste

Løsning:

  1. Åbn filen og vælg den rigtige kode (eller kombiner begge)
  2. Fjern konflikt-markørerne (<<<<, ====, >>>>)
  3. git add . og git commit -m "merge: loes konflikt i Program.cs"

Konflikter er normale i teams — de betyder bare, at Git ikke kan gætte, hvad du vil beholde.

Feature branch workflow

Standard workflow i GF2 og erhverv:

  1. Opret branch fra opdateret main
  2. Arbejd på featuren — commit ofte
  3. Push branchen til GitHub
  4. Merge til main (lokalt eller via Pull Request på GitHub)
  5. Slet feature-branchen når den er merged
git checkout main
git pull                           # hent seneste fra GitHub
git checkout -b feature/ny-funktion
# ... arbejde og commits ...
git push -u origin feature/ny-funktion
git checkout main
git merge feature/ny-funktion
git push

-u origin linker din lokale branch til GitHub — derefter kan du bare git push.

Samarbejde i studiegrupper

Branches gør det muligt at arbejde parallelt uden at overskrive hinanden:

  • Person A arbejder på feature/jobliste
  • Person B arbejder på feature/bruger-login
  • Begge merger til main, når features er færdige

Regler:

  • Pull altid seneste main før du opretter ny branch
  • Kommuniker hvem der arbejder på hvad
  • Løs konflikter sammen — det er en læringsmulighed
  • Test efter merge — sørg for at main stadig kører

Dette workflow er identisk med det, I møder i praktik og job.

Test din viden

Spørgsmål 1

Hvad er en branch i Git?

Spørgsmål 2

Hvad gør git checkout -b feature/navn?

Spørgsmål 3

Hvad er en merge-konflikt?

Spørgsmål 4

Hvad er main i feature branch workflow?

Spørgsmål 5

Hvorfor bør du git pullmain før du opretter en ny branch?

Spørgsmål 6

Hvad gør git merge feature/jobliste når du står på main?

Spørgsmål 7

Hvad betyder -u origin ved git push -u origin feature/ny-funktion?