Git Branches Lokal und Remote Löschen
Git-Branches fungieren als unabhängige Umgebungen für die Entwicklung. Sie ermöglichen es, neue Features, Bugfixes oder Experimente durchzuführen, ohne den Hauptzweig zu beeinträchtigen. Jeder Branch besitzt eine eigene Commit-Historie, wodurch Änderungen sicher getestet werden können, bevor sie zusammengeführt werden. Mit zunehmendem Projektumfang können jedoch ungenutzte oder bereits gemergte Branches das Repository unübersichtlich machen und die Zusammenarbeit erschweren. Das regelmäßige Entfernen veralteter Branches – sei es nach einem Merge, abgeschlossenen Aufgaben oder gescheiterten Tests – sorgt für ein sauberes, fokussiertes und leichter zu verwaltendes Repository. In diesem Leitfaden wird erklärt, wie Git-Branches funktionieren und wie man sie sowohl lokal als auch remote löscht.
Kurzfassung
Wenn du Git bereits kennst und nur die wichtigsten Befehle zum Löschen benötigst, nutze folgende Kommandos:
# Lokalen Branch löschen (sicher, löscht keine ungemergten Änderungen)
$ git branch -d <branch_name>
# Lokalen Branch erzwingen (auch ungemergte Änderungen werden gelöscht)
$ git branch -D <branch_name>
# Remote-Branch löschen
$ git push origin --delete <branch_name>
Im Folgenden findest du detaillierte Erklärungen und Beispiele zu jedem Befehl.
Einen Git Branch Lokal Löschen
Nachdem ein Feature-Branch in den Hauptzweig integriert wurde, kannst du ihn bedenkenlos lokal entfernen. Git stellt dabei Schutzmechanismen bereit, um versehentliches Löschen zu vermeiden.
Befehls-Erklärung (Lokal)
Der Befehl git branch
wird mit den Flags -d
oder -D
genutzt. Kleinbuchstabe -d
löscht nur gemergte Branches, während -D
das Löschen auch ohne Merge erzwingt.
Befehls-Syntax (Lokal)
So löschst du einen Branch lokal:
git branch -d <branch_name>
git branch -D <branch_name>
- git branch: Verwaltung von Branches
- -d: Löscht nur, wenn bereits gemergt
- -D: Erzwingt das Löschen, auch wenn nicht gemergt
- <branch_name>: Name des Branches
Übersicht der Flags (Lokal)
Zusätzliche Optionen zur Verwaltung von Branches:
Flag | Beschreibung |
---|---|
-d, –delete | Löscht nur, wenn gemergt |
-D | Erzwingt das Löschen, auch wenn nicht gemergt |
-v, –verbose | Zeigt den letzten Commit jedes Branches |
-a, –all | Listet lokale und Remote-Branches auf |
–merged | Listet Branches, die bereits gemergt wurden |
–no-merged | Listet Branches, die noch nicht gemergt wurden |
Beispiel (Lokal)
Ein typischer Ablauf zum Löschen lokaler Branches:
Alle lokalen Branches anzeigen:
$ git branch
development
feature-login
hotfix-header
* main
Bereits gemergte Branches prüfen:
$ git branch --merged
development
feature-login
* main
Gemergten Branch löschen:
$ git branch -d feature-login
Deleted branch feature-login (was 8cd77fa).
Versuch, einen nicht gemergten Branch zu löschen:
$ git branch -d hotfix-header
error: the branch 'hotfix-header' is not fully merged
hint: If you are sure you want to delete it, run 'git branch -D hotfix-header'
Erzwungenes Löschen eines ungemergten Branches:
$ git branch -D hotfix-header
Deleted branch hotfix-header (was a0716a9).
Verbleibende Branches erneut prüfen:
$ git branch
development
* main
Das Löschen eines Branches entfernt nur die Referenz. Wurde er nicht gemergt, können seine Commits unzugänglich werden und später von Git’s Garbage Collector entfernt werden.
Einen Git Branch Remote Löschen
Nachdem ein Branch lokal entfernt wurde, kann er auch auf dem Remote-Repository gelöscht werden. Das sorgt für Konsistenz zwischen allen Projektmitgliedern und verhindert unnötige Unordnung.
Befehls-Übersicht (Remote)
Zum Entfernen eines Remote-Branches wird git push
mit dem Flag --delete
genutzt. Im Gegensatz zum lokalen Löschen prüft Git hier nicht, ob ein Branch gemergt ist.
Befehls-Syntax (Remote)
Moderne Syntax:
git push <remote> --delete <branch_name>
- git push: Aktualisiert das Remote-Repository
- <remote>: Meist „origin“
- –delete: Entfernt den angegebenen Branch
- <branch_name>: Name des zu löschenden Branches
Alternative ältere Syntax:
git push <remote> :<branch_name>
Der Doppelpunkt vor dem Branch-Namen weist Git an, diesen vom Remote-Repository zu entfernen.
Übersicht der Befehls-Flags (Remote)
Beim Löschen von Branches in einem Remote-Repository bietet Git zwei Möglichkeiten: den modernen --delete
-Parameter sowie die ältere Doppelpunkt-Syntax. Während beim Remote-Löschen keine Sicherheitsprüfungen für ungemergte Branches erfolgen, erzielen beide Varianten dasselbe Ergebnis. Hier eine Übersicht hilfreicher Flags:
Flag | Beschreibung |
---|---|
–delete, -d | Entfernt den angegebenen Branch aus dem Remote-Repository |
–force, -f | Erzwingt den Push, auch wenn kein Fast-Forward vorliegt (für Delete nicht erforderlich) |
–dry-run, -n | Simuliert den Befehl, ohne Änderungen vorzunehmen |
–verbose, -v | Zeigt detaillierte Ausgaben während des Vorgangs |
Befehls-Demonstration (Remote)
Ein Beispielablauf zum Löschen eines Remote-Branches und zum Aufräumen der lokalen Referenzen:
Alle Remote-Branches auflisten:
$ git branch -r
origin/HEAD -> origin/main
origin/development
origin/feature-login
origin/hotfix-header
origin/main
Den Branch feature-login
aus dem Remote-Repository entfernen:
$ git push origin --delete feature-login
To https://github.com/<username>/<repository>.git
- [deleted] feature-login
Gelöschte Referenzen aus dem lokalen Klon entfernen:
$ git fetch --prune
From https://github.com/<username>/<repository>.git
- [deleted] (none) -> origin/feature-login
Die Option --prune
entfernt Remote-Referenzen, die auf dem Server nicht mehr existieren.
Zur Bestätigung erneut die Remote-Branches prüfen:
$ git branch -r
origin/HEAD -> origin/main
origin/development
origin/hotfix-header
origin/main
Die lokale Kopie des entfernten Remote-Branches löschen:
$ git branch -d feature-login
Andere Entwickler mit lokalen Klonen müssen ebenfalls das Prune-Kommando ausführen, um ihre Referenzen zu aktualisieren:
$ git fetch --prune
Hinweis: Um einen Remote-Branch zu löschen, benötigst du die entsprechenden Berechtigungen. Bei Fehlermeldungen solltest du deine Zugriffsrechte prüfen oder den Repository-Administrator kontaktieren.
Fazit
Nun weißt du, wie man Git-Branches sowohl lokal als auch remote entfernt. Egal ob du gemergte Feature-Branches bereinigst oder alte Branches entfernst – mit Befehlen wie git branch -d
, git branch -D
und git push origin --delete
hältst du dein Repository sauber und effizient. Außerdem hast du gelernt, wann ein Branch-Löschen sinnvoll ist und wie sich typische Fehler – etwa das versehentliche Erzwingen bei ungemergten Änderungen – vermeiden lassen. Für weitere Details und erweiterte Konfigurationsoptionen empfiehlt sich die offizielle Git-Dokumentation.