Så där – du har en gren som du inte längre behöver. Att radera den borde vara enkelt, men Git kan ibland säga ifrån med ett felmeddelande. Den här guiden går igenom kommandona git branch -d och git branch -D, förklarar varför raderingen ibland misslyckas och visar hur du felsöker vanliga problem som utcheckad gren eller arbetskopplade träd. Efter fem minuter vet du exakt hur du håller ditt lokala repository rent.

Kommandon som raderar lokal gren: git branch -d <grennamn> (säker) och git branch -D <grennamn> (tvingad) ·
Antal raderade lokala grenar per dag (uppskattning): Miljontals baserat på GitHub-statistik ·
Vanligaste felet vid radering: Kan inte radera gren som är utcheckad (checked out) ·
Kommandot för att radera fjärrgren: git push origin --delete <grennamn> ·
Rensa alla lokala grenar som inte finns på fjärrservern: git remote prune origin

Snabböversikt

1Bekräftade fakta
2Vad som är oklart
  • Exakt antal utvecklare som dagligen stöter på checked out-felet är inte känt.
  • Om specifika GUI-klienter (GitKraken, Sourcetree) internt använder -d eller -D varierar.
3Tidlinjesignal
4Vad händer härnäst

Tabellen nedan sammanfattar de viktigaste kommandona för radering av lokala grenar.

Nyckelfakta för att radera lokal gren i Git
Egenskap Värde
Säkert raderingskommando git branch -d <grennamn>
Tvingat raderingskommando git branch -D <grennamn>
Villkor för säker radering Grenen måste vara fullt sammanslagen med sin uppströmsgren
Standardfelmeddelande error: The branch '<gren>' is not fully merged.
Kommandot för att radera fjärrgren git push origin --delete <grennamn>

Mönstret: om du håller dig till -d för sammanslagna grenar och reserverar -D för när du är helt säker, undviker du att förlora arbete i onödan.

Hur raderar jag en lokal gren i git?

Grundkommando för att radera en lokal gren

För att radera en lokal gren använder du git branch -d <grennamn>. Kommandot fungerar bara om grenen är fullt sammanslagen med sin uppströmsgren (ofta main eller master). Detta är ett säkerhetsskydd från Git för att du inte ska förlora osparade ändringar. Git Book – officiell dokumentation beskriver att -d är en förkortning för --delete.

Varför detta är värt att veta

En utvecklare som kör git branch -d på en osammanslagen gren får ett fel – och det är ett medvetet val från Git. För den som snabbt vill rensa bort gamla feature-grenar är -D den enda vägen framåt, men då riskerar man att förlora commits. CloudBees (DevOps-plattform) rekommenderar att alltid verifiera med git log innan du tvingar radering.

Skillnad mellan git branch -d och git branch -D

Flaggan -D är en genväg för --delete --force och tvingar radering även om grenen inte är sammanslagen. Stack Overflow – community förklarar att -D används när du är säker på att du inte behöver grenens commits längre. Skillnaden är enkel: -d är säker, -D är tvingad.

Kontrollera att du inte står på grenen som ska raderas

Du kan inte radera den gren du för närvarande har utcheckad. TheServerSide – teknisk publikation visar arbetsflödet: först byt till main med git checkout main, sedan radera. Kör git branch --list för att se vilken gren som är aktiv (markerad med *).

Vad detta innebär: Om du försöker radera den gren du står på får du felet Cannot delete branch 'X' checked out at '...'. Det är Gits sätt att skydda dig från att oavsiktligt radera den gren du arbetar i.

Varför kan jag inte radera en gren i git?

Grenen är utcheckad – byt gren först

Detta är det vanligaste felet. CloudBees – DevOps-plattform bekräftar att Git vägrar radera en utcheckad gren. Lösningen: git checkout main (eller en annan gren) och försök sedan radera.

Osammanslagna ändringar – använd -D eller slå samman först

Om grenen innehåller commits som inte är sammanslagna med main (eller din uppströmsgren) nekar git branch -d radering. Git Book – officiell dokumentation är tydlig: -d kräver att grenen är fullt sammanslagen. Antingen slår du samman först (git merge) eller använder git branch -D för att tvinga borttagning – men var då medveten om att commitsen försvinner.

Arbetskopplade träd (worktree) – identifiera och ta bort

Från och med Git 2.30 kan du inte radera en gren som används av ett arbetskopplat träd utan explicit flagga. Stack Overflow – community diskuterar att kommandot git worktree list visar vilka träd som är kopplade till grenen. Ta bort worktreet först med git worktree remove <sökväg>, radera därefter grenen.

Haken

För utvecklare som använder flera arbetsytor (worktrees) är det lätt att glömma bort att en gren fortfarande används. Konsekvensen: git branch -d misslyckas utan förklaring om du inte kollar worktree-listan först. Git Tower – Git-utbildning rekommenderar att alltid köra git worktree list som en rutin före radering.

Hur raderar jag lokala grenar förutom main?

Kommandot för att radera alla grenar utom main

Kombinera git branch med grep och xargs: git branch | grep -v "main" | xargs git branch -d. Detta listar alla lokala grenar, filtrerar bort main och skickar resten till git branch -d. freeCodeCamp – utbildningsplattform beskriver detta som ett effektivt rensningskommando.

Rensa bort grenar som inte finns på fjärrservern

git remote prune origin tar bort lokala referenser till fjärrgrenar som har raderats på servern. Git Tower – Git-utbildning förklarar att detta inte raderar dina lokala grenar, bara de spårade referenserna. För att radera även de lokala kopiorna av föråldrade grenar kan du använda git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d.

Automatisera rensning med alias eller skript

Skapa ett Git-alias i din konfiguration: git config --global alias.cleanup "!git branch --merged | grep -v '\*\|main\|master' | xargs -r git branch -d". Därefter räcker git cleanup för att radera alla sammanslagna grenar utom main. Stack Overflow – community har flera exempel på anpassade alias.

Mönstret: Ju mer du automatiserar, desto mindre risk att du glömmer bort gamla grenar. Men var försiktig med -D i skript – en felaktig pipeline kan radera grenar du fortfarande behöver.

Hur raderar jag en lokal gren som inte finns på remote?

Identifiera föråldrade lokala grenar

Kommandot git branch -vv visar varje lokal gren, dess senaste commit och om den har en fjärrmotsvarighet. En gren som saknar fjärrreferens markeras inte explicit, men om fjärrgrenen har raderats visas [gone] i utskriften. TheServerSide – teknisk publikation rekommenderar att regelbundet granska dessa.

Ta bort lokala grenar som saknar fjärrmotsvarighet

Kör git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d för att radera alla grenar vars fjärrmotsvarighet har försvunnit. CloudBees – DevOps-plattform beskriver detta som en säker metod eftersom grenarna redan är sammanslagna (annars skulle -d misslyckas).

Vad detta innebär för dig: Om du arbetar i ett team där andra raderar fjärrgrenar efter sammanslagning, är det här kommandot du behöver för att hålla ditt lokala repository rent från spök-grenar.

Steg för steg: radera en lokal gren

  1. Kontrollera vilken gren du står på: git branch (den aktiva markeras med *).
  2. Byt till en annan gren (t.ex. main): git checkout main.
  3. Kontrollera om grenen är sammanslagen: git branch --merged – grenen visas i listan.
  4. Radera grenen: git branch -d <grennamn>.
  5. Om radering misslyckas, överväg git branch -D <grennamn> (tvingad).
  6. Verifiera att grenen är borta: git branch.

Git Book – officiell dokumentation bekräftar att detta är det rekommenderade arbetsflödet.

Bekräftade fakta vs. oklarheter

Bekräftade fakta

  • git branch -d raderar endast sammanslagna grenar (Git Book)
  • git branch -D raderar oavsett sammanslagning (Git Book)
  • En utcheckad gren kan inte raderas normalt (TheServerSide)
  • Git 2.30+ blockerar radering av gren som används av worktree (Stack Overflow)

Vad som är oklart

  • Exakt antal användare som stöter på checked out at-felet dagligen är okänt.
  • Om specifika GUI-klienter (t.ex. GitKraken, Sourcetree) internt använder -d eller -D.

Vad säger experterna?

”Delete a branch. The branch must be fully merged in its upstream branch, or in HEAD if no upstream was set.”

— Git Book – officiell dokumentation

”Git is protecting you from losing work. Use -D if you are sure.”

— Stack Overflow – användare med hög rösträkning

”A common mistake is trying to delete the branch you’re currently on. Always switch to another branch first.”

— CloudBees – DevOps-plattform

Sammanfattningsvis: att radera en lokal gren i Git är enkelt när du känner till reglerna. För den enskilda utvecklaren som sitter med ett rörigt repository är det tydliga valet att använda git branch -d för sammanslagna grenar och git branch -D när du är säker. För team som arbetar med fjärrgrenar och worktrees krävs dessutom en extra kontroll – men med de kommandon som beskrivits här har du allt du behöver för att hålla ordning.

Vanliga frågor

Vad är skillnaden mellan git branch -d och git branch -D?

git branch -d raderar endast om grenen är fullt sammanslagen med sin uppströmsgren. git branch -D tvingar radering oavsett sammanslagning. (Git Book)

Kan jag radera en gren som jag står på?

Nej, Git förhindrar radering av den utcheckade grenen. Byt först till en annan gren med git checkout main. (TheServerSide)

Vad betyder ”Cannot delete branch checked out at”?

Felet uppstår när du försöker radera en gren som är utcheckad i det aktuella repositoryt eller i ett arbetskopplat träd (Stack Overflow).

Hur raderar jag alla lokala grenar som redan har slagits samman?

Använd git branch --merged | grep -v "main" | xargs git branch -d. Detta raderar alla sammanslagna grenar utom main. (freeCodeCamp)

Raderar git branch -d även grenen på fjärrservern?

Nej, git branch -d påverkar bara den lokala kopian. För att radera fjärrgrenen använd git push origin --delete <grennamn>. (Stack Overflow)

Hur ser jag vilka grenar som kan raderas säkert?

Kör git branch --merged för att se grenar som är fullt sammanslagna och därmed säkra att radera med -d. (Git Book)

Relaterad läsning: ASUS Z97-A – guide och specifikationer · 5G-router med SIM-kort – jämför hastighet och pris