
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
git branch -draderar endast sammanslagna grenar (Git Book – officiell dokumentation)git branch -Dtvingar radering oavsett sammanslagning (Git Book – officiell dokumentation)- En utcheckad gren kan inte raderas normalt (TheServerSide – teknisk publikation)
- Lokal radering påverkar inte fjärrgrenen (Git Tower – Git-utbildningsplattform)
- Exakt antal utvecklare som dagligen stöter på checked out-felet är inte känt.
- Om specifika GUI-klienter (GitKraken, Sourcetree) internt använder
-deller-Dvarierar.
- Git 2.23 (2019) introducerade
git switchsom ett tydligare alternativ tillgit checkout(Git Book – officiell dokumentation) - Git 2.30 (2020) skärpte kontrollen för grenar som används av arbetskopplade träd (worktrees) (Stack Overflow – communitydiskussion)
- Rensa även fjärrgrenen med
git push origin --delete <grennamn>(Stack Overflow – community) - Använd
git remote prune originför att städa bort spårade referenser till borttagna fjärrgrenar (Git Tower – Git-utbildningsplattform)
Tabellen nedan sammanfattar de viktigaste kommandona för radering av lokala grenar.
| 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.
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.
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
- Kontrollera vilken gren du står på:
git branch(den aktiva markeras med*). - Byt till en annan gren (t.ex.
main):git checkout main. - Kontrollera om grenen är sammanslagen:
git branch --merged– grenen visas i listan. - Radera grenen:
git branch -d <grennamn>. - Om radering misslyckas, överväg
git branch -D <grennamn>(tvingad). - 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 -draderar endast sammanslagna grenar (Git Book)git branch -Draderar 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
-deller-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.
refine.dev, youtube.com, reddit.com, docs.github.com, theserverside.com
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








