
Git lokalen Branch löschen: Sichere Befehle & Anleitung
Wer viel mit Git arbeitet, kennt dasProblem: Ein Feature-Branch wurde längst gemergt, aber er hängt noch lokal rum und verstopft die Übersicht. Bevor man einen Branch löscht, sollte man aber wissen, welcher Befehl welcher ist – denn der falsche Griff kann ungemergte Arbeit unwiederbringlich kosten. Dieser Leitfaden zeigt, wie Sie lokale Branches sicher entfernen und welche Fallen es zu umgehen gilt.
Standardbefehl zum Löschen: git branch -d <branchname> ·
Erzwungenes Löschen: git branch -D <branchname> ·
Voraussetzung: Nicht auf dem Branch sein ·
Sicherheitsflag: -d prüft ungemergte Commits ·
Remote-Löschung separat: git push origin –delete <branchname>
Kurzüberblick
git branch -dlöscht nur gemergte Branches (centron GmbH)git branch -Derzwingt das Löschen auch bei ungemergten Änderungen (centron GmbH)- Das Löschen entfernt nur den Zeiger – Commits bleiben bis zur Garbage Collection erhalten (labex.io)
- Wie Git die Garbage-Collection-Zeitfenster genau berechnet, ist nicht dokumentiert
- Windows-spezifische Pfadprobleme bei bestimmten Sonderzeichen in Branch-Namen
- Die offizielle Git-Dokumentation empfiehlt
-Dfür ungemergte Branches (Git SCM Book) - GUI-Clients wie GitKraken bieten zunehmend visuelle Bestätigungsdialoge (Git SCM Book)
git fetch --prunebereinigt verwaiste lokale Referenzen automatisch (OpenReplay Blog)- Reflog-Wiederherstellung bleibt als Sicherheitsnetz verfügbar (OpenReplay Blog)
| Label | Value |
|---|---|
| Primärer Befehl | git branch -d <branchname> |
| Force-Flag | -D oder –delete –force |
| Current Branch Fehler | Zuerst checkout main |
| Remote separat | git push origin –delete |
| Alias | –delete (für -d) |
| Branch-Übersicht | git branch -a |
| Gone-Branches finden | git branch -vv |
Wie lösche ich einen lokalen Branch?
Der Standardbefehl für sicheres Löschen lautet git branch -d <branchname>. Git prüft dabei automatisch, ob der Branch in den Zielbranch gemergt wurde – nur dann erfolgt die Löschung. Befindet sich der Branch noch nicht in einem Merge-Status, zeigt Git eine Warnung und verweigert das Löschen (centron GmbH).
Sicheres Löschen mit git branch -d
Zwei Voraussetzungen müssen erfüllt sein, bevor Sie diesen Befehl ausführen: Sie dürfen sich nicht auf dem Branch befinden, den Sie löschen möchten, und der Branch muss vollständig in einen anderen Branch gemergt sein (Git SCM Book).
- Wechseln Sie zuerst auf einen anderen Branch:
git switch mainodergit checkout main - Führen Sie dann den Löschbefehl aus:
git branch -d feature/my-branch - Bei Erfolg zeigt Git keine Ausgabe – das Fehlen einer Fehlermeldung ist die Bestätigung
Voraussetzungen prüfen
Vor dem Löschen sollten Sie den Status prüfen. Mit git branch -v sehen Sie den letzten Commit jedes Branches. Die erweiterte Ansicht git branch -vv zeigt zusätzlich, ob ein Remote-Tracking-Branch vorhanden ist – Branches mit dem Status [gone] haben keine Gegenstelle mehr auf dem Remote (code-fever.de).
Das Löschen eines Branches entfernt nur den Zeiger auf den Commit-Baum. Die Commits selbst bleiben erhalten und können über das Reflog wiederhergestellt werden, bis die automatische Garbage Collection sie endgültig entfernt (labex.io).
Entwickler, die versehentlich einen Branch löschen, können aufatmen: Die Arbeit ist nicht sofort verloren. Voraussetzung ist allerdings, dass keine explizite Garbage Collection mit git gc --prune=now durchgeführt wurde.
Der Befehl git branch -d schützt Sie davor, versehentlich nicht zusammengeführte Arbeit zu verlieren – Git lässt die Löschung nur zu, wenn der Branch in einen anderen Branch gemergt wurde.
Wie lösche ich einen lokalen Git-Branch erzwungen?
Manchmal ist ein Branch nicht gemergt, aber die Arbeit darauf ist veraltet oder soll verworfen werden. Dann kommt git branch -D <branchname> zum Einsatz – das großgeschriebene Flag ignoriert den Merge-Status vollständig und löscht den Branch sofort (centron GmbH).
git branch -D verwenden
git branch -D feature/my-branch– löscht auch bei ungemergten Änderungen- Das Flag
-Dist die Kurzform von--delete --force(Oliver Jessner) - Git zeigt keine Warnung – seien Sie sich Ihrer Sache sicher, bevor Sie diesen Befehl ausführen
Wann -D notwendig ist
Typische Szenarien für den Force-Delete sind: ein verworfener Feature-Branch, der nie in einen Pull-Request überführt wurde, ein Hotfix-Branch nach manuellem Patch-Apply, oder ein Branch, dessen Änderungen durch einen Rebase obsolet geworden sind. Git Tower empfiehlt diesen Befehl ausdrücklich für Branches, deren Inhalt nicht mehr benötigt wird (Git Tower).
Wenn Sie -D auf einen Branch mit ungespeicherten Änderungen anwenden, die nicht committet wurden, gehen diese Änderungen unwiderbringlich verloren. Führen Sie immer git status vorher aus.
Der Force-Delete löscht unwiederbringlich – prüfen Sie den Branch-Inhalt mit git log --oneline <branch> bevor Sie -D einsetzen.
Ist es sicher, einen lokalen Branch in Git zu löschen?
Grundsätzlich gilt: Das Löschen eines lokalen Branches beeinflusst weder den Remote-Branch noch andere lokale Branches. Solange Sie den Branch nicht gerade ausgecheckt haben, ist die Operation lokal sicher (ComputerWeekly).
Risiken bei ungemergten Änderungen
Die größte Gefahr besteht darin, einen Branch mit Arbeit zu löschen, die nirgendwo sonst gesichert ist. Bevor Sie -D verwenden, prüfen Sie mit git log --oneline branch-name, ob relevante Commits vorhanden sind. OpenReplay Blog empfiehlt, vor Massen-Löschungen erst Backups oder Tags zu erstellen (OpenReplay Blog).
Nach Merge löschen
Der empfohlene Workflow ist simpel: Merge abwarten, dann git branch -d aufrufen. GitHub bietet über die Web-Oberfläche die Möglichkeit, Branches automatisch nach dem Merge zu löschen – ein Klick im Dropdown-Menü nach dem Mergen eines Pull Requests (GitHub Docs).
Das Löschen eines lokalen Branches hat keinen Einfluss auf den Remote – diese Operationen sind vollständig voneinander getrennt.
Warum kann ich einen Branch nicht löschen?
Der häufigste Fehler beim Löschen ist der Versuch, den Branch zu entfernen, auf dem man aktuell arbeitet. Git antwortet dann mit der Meldung „cannot delete branch checked out” und verweigert die Operation (labex.io).
Fehler „branch is currently checked out”
Dieser Fehler tritt auf, wenn Sie versuchen, Ihren aktuellen Arbeitsbranch zu löschen. Die Lösung ist trivial: Wechseln Sie zuerst auf einen anderen Branch, etwa main oder master, und führen Sie den Löschbefehl dann erneut aus. ComputerWeekly dokumentiert diesen Fehler und die zugehörige Lösung ausführlich (ComputerWeekly).
- Fehlerhafte Syntax:
git branch -delete(richtig wäre-d) - Branch existiert nicht – prüfen Sie mit
git branchdie existierenden Branches - Tippfehler im Branch-Namen – Autovervollständigung mit Tab nutzen
Lösung: Zu anderem Branch wechseln
Die Befehle git switch main oder git checkout main wechseln den aktuellen Branch. Nach dem Wechsel können Sie den gewünschten Branch löschen. Die Alternative git branch --delete funktioniert identisch zu -d (ComputerWeekly).
Git verhindert das Löschen des aktuellen Branch, weil der HEAD-Zeiger auf diesen Branch zeigt. Ein Löschen würde die Referenz kappen, während der Arbeitsbaum weiter auf dem nicht mehr existierenden Branch zeigen würde.
Der Befehl git branch --delete ist eine explizite Alternative zu -d – beide Varianten verhalten sich identisch.
Wie synchronisiere ich nach Löschung mit Remote?
Wenn ein Remote-Branch gelöscht wurde, bleibt die lokale Referenz darauf als sogenannte „gone”-Branch bestehen. Diese verwaisten Referenzen lassen sich mit einem einzigen Befehl bereinigen (OpenReplay Blog).
Lokalen Branch nach Remote-Löschung entfernen
Zwei Schritte sind nötig: Zuerst holen Sie die aktuellen Remote-Referenzen mit git fetch --prune. Dieser Befehl entfernt automatisch alle lokalen Remote-Tracking-Branches, die auf dem Remote nicht mehr existieren. Danach können Sie den lokalen Branch mit git branch -d <branch-name> löschen, falls er noch existiert (OpenReplay Blog).
git fetch --prune– bereinigt gone-Referenzen automatischgit branch -vv– zeigt alle Branches mit Remote-Status- Zeilen mit [: gone] zeigen verwaiste Remote-Tracking-Branches
git fetch und prune
Eine alternative Methode zum Bereinigen funktioniert über git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d. Dieser Befehl identifiziert alle Branches, deren Remote-Gegenstelle verschwunden ist, und löscht sie automatisch. DataCamp empfiehlt diesen Workflow als Best Practice für die regelmäßige Repository-Pflege (DataCamp).
Führen Sie git fetch --prune regelmäßig aus – idealerweise als Teil jedes Fetch-Vorgangs. In der Git-Konfiguration lässt sich dies mit git config --global fetch.prune true dauerhaft aktivieren.
Die Bereinigung verwaister Referenzen mit git fetch --prune sollte Teil des regelmäßigen Workflows sein – aktiviert man dies dauerhaft, spart man sich manuelle Aufräumarbeit.
Bestätigte Fakten
git branch -d/-Dsind Standardbefehle in Git- Lokales Löschen ist unabhängig vom Remote-Status
- Das Löschen entfernt nur den Branch-Zeiger, nicht die Commits
-dprüft Merge-Status,-Dignoriert ihn
Was noch unklar ist
- Genaue Garbage-Collection-Zeitfenster nicht dokumentiert
- Windows-Pfadprobleme bei Sonderzeichen begrenzt erforscht
Kleinbuchstabe -d löscht nur gemergte Branches, während -D das Löschen auch ohne Merge erzwingt.
— centron GmbH (Tutorial-Autor)
Überprüfen Sie immer den Branch-Status vor dem Löschen, um den Verlust nicht zusammengeführter Arbeit zu vermeiden.
— OpenReplay Blog (Blog-Autor)
Das Löschen eines Branchs löscht nicht die Arbeit, die auf diesem Branch geleistet wurde.
— labex.io (Tutorial-Autor)
Die Unterscheidung zwischen -d und -D ist die zentrale Entscheidung beim Branch-Löschen: Werden Sie systematisch paranoid bei der Wahl zwischen beiden Flags, sparen Sie sich spätere Panic-Momente wegen vermeintlich verlorener Arbeit.
Verwandte Beiträge: Git Branches lokal und remote löschen Anleitung · Wie man einen lokalen Git-Branch dauerhaft löscht
Entwickler, die lokale Branches sicher entfernen möchten, profitieren von ähnlichen Tipps wie in dieser schwedische Anleitung zur Branch-Löschungschwedischen Anleitung zur Branch-Löschung mit -d und -D beschrieben.
Häufig gestellte Fragen
Wie liste ich lokale Branches auf?
Mit git branch zeigen Sie nur lokale Branches. Für eine vollständige Ansicht inklusive Remote-Branches verwenden Sie git branch -a. Die erweiterte Ausgabe mit Commit-Infos erhalten Sie über git branch -v (labex.io).
Was passiert bei ungemergten Commits?
Bei git branch -d verweigert Git die Löschung und zeigt eine Warnung. Bei git branch -D werden alle ungemergten Commits des Branches ebenfalls gelöscht – sie sind nur über das Reflog wiederherstellbar (centron GmbH).
Löscht git branch -d auch Remote?
Nein. git branch -d wirkt sich ausschließlich auf lokale Branches aus. Remote-Branches werden mit git push origin --delete <branch-name> oder über die GitHub-Oberfläche entfernt. Remote-Löschung prüft anders als lokal keinen Merge-Status (centron GmbH).
Kann ich einen gelöschten Branch wiederherstellen?
Ja, innerhalb des Reflog-Zeitfensters. Mit git reflog finden Sie den Commit, auf den der Branch zeigte, und mit git branch <branch-name> <commit-sha> stellen Sie ihn wieder her. Das funktioniert so lange, bis die Garbage Collection die verwaisten Objekte entfernt hat (OpenReplay Blog).
Unterschied zwischen -d und -D?
Das Flag -d löscht nur, wenn der Branch gemergt wurde – es ist der sichere Modus. -D (oder --delete --force) erzwingt die Löschung ohne Merge-Prüfung – für diesen Befehl brauchen Sie einen triftigen Grund (Git SCM Book).
Wie lösche ich alle gemergten Branches?
Mit einem Einzeiler: git branch --merged | grep -v "main\|master" | xargs git branch -d. Dieser Befehl listet alle gemergten Branches auf, schließt main und master aus, und löscht die übrigen automatisch. Seien Sie vorsichtig bei der Batch-Ausführung und prüfen Sie die Liste vorher.
Wie lösche ich lokale Änderungen?
Für nicht committete Änderungen nutzen Sie git checkout -- <file> oder git restore <file>. Diese Befehle verwerfen lokale Änderungen und stellen den letzten Commit-Stand wieder her. Vorsicht: Diese Änderungen sind unwiederbringlich verloren.