Wenn Sie wie ich ein aktiver Git-Benutzer sind, haben Sie wahrscheinlich einen Haufen alter Branches angesammelt. Einige wurden zusammengeführt, einige wurden aufgegeben und einige, an deren Erstellung Sie sich nicht einmal erinnern können. Diese Branches zu behalten mag nicht wie ein großes Problem erscheinen, aber im Laufe der Zeit können sie Ihr Repository überfüllen und es schwieriger machen, aktive Arbeiten nachzuverfolgen.
In diesem Leitfaden werde ich erklären, wie Sie Git-Branches lokal und remote löschen können, wobei ich die sichersten Methoden und mögliche Fallstricke erläutere, auf die Sie achten sollten.
Was bewirkt das Löschen eines Git-Branches?
Git-Branches sind temporär angelegt. Sie bieten Ihnen einen Raum, um an neuen Funktionen, Fehlerkorrekturen oder Experimenten zu arbeiten, ohne die Hauptcodebasis zu beeinträchtigen. Aber sobald ein Branch seinen Zweck erfüllt hat, fügt das Beibehalten nur unnötigen Ballast hinzu. Das Löschen von Branches ist aus meiner Sicht eine gute Haushaltsführung, um Ihren Git-Workflow sauber und übersichtlich zu halten.
Ich möchte betonen, dass das „Löschen“ eines Branches nicht dasselbe ist wie das „Auslöschen“ deiner Arbeit. Wenn du einen Branch in Git löscht, löschst du nicht die Commits, sondern nur den Verweis auf sie. So funktioniert es:
- Löschen eines lokalen Branches entfernt den Branch aus deinem persönlichen Repository. Wenn kein anderer Branch oder Tag auf diese Commits verweist, können sie letztendlich durch die Müllabfuhr von Git bereinigt werden.
- Löschen eines Remote-Zweigs entfernt den Zweig aus dem gemeinsamen Repository (z. B. GitHub, GitLab, Bitbucket), sodass er für Mitwirkende nicht mehr zugänglich ist. Lokale Kopien dieses Zweigs auf anderen Geräten bleiben jedoch bestehen, bis sie manuell entfernt oder aktualisiert werden.
Warum einen Zweig löschen?
Das Löschen eines Zweigs ist eine gute Aufräumarbeit, ganz einfach. Genauso wie es sinnvoll ist, doppelte Fotos, alte Downloads und veraltete Ordner zu löschen, gibt es mehrere gute Gründe, einen Zweig zu löschen, sobald er nicht mehr benötigt wird:
- Es hält Ihr Repository sauber. Zu viele Branches, insbesondere veraltete, erschweren es, die aktive Arbeit zu verfolgen.
- Es verhindert Verwirrung. Wenn ein Branch nicht mehr relevant ist, kann das Beibehalten Verwirrung darüber verursachen, ob er noch verwendet wird.
- Es verbessert die Zusammenarbeit. In Teamumgebungen signalisiert das Löschen abgeschlossener Feature-Branches, dass die Arbeit erledigt ist, und verhindert unnötige Arbeiten an veralteten Codes.
- Es reduziert die Überfüllung des entfernten Repositorys. Entfernte Repositories können mit veralteten Branches überfüllt werden, was es schwieriger macht, durch die Projektgeschichte zu navigieren.
Wenn Sie neu bei Git sind oder es einrichten müssen, bevor Sie Branches verwalten, schauen Sie sich das Git-Installations-Tutorial mit schrittweisen Anweisungen an.
Lokalen Git-Branch löschen
Das Löschen eines lokalen Branchs ist nicht schwierig; zum Glück ist es eine der einfacheren Git-Aufgaben. Lassen Sie uns den sichersten Weg dazu überprüfen und worauf Sie achten sollten.
Der grundlegende Befehl, um einen lokalen Branch zu löschen
Der sicherste Weg, einen lokalen Branch zu löschen, ist mit der -d
-Flagge:
git branch -d <branch_name>
Beachten Sie, dass dieser Befehl nur funktioniert, wenn der Branch vollständig in den aktuellen Branch (typischerweise main
oder master
) zusammengeführt wurde. Wenn es unmerged Änderungen gibt, wird Git Sie stoppen, um versehentlichen Datenverlust zu verhindern.
Lokalen Branch zwangsweise löschen
Wenn Sie versuchen, einen Branch zu löschen, der noch unmerged Änderungen hat, lässt Sie Git nicht zu, es sei denn, Sie zwingen es:
git branch -D <branch_name>
Das -D
Flag (beachten Sie das große D) überspringt die Sicherheitsüberprüfung und löscht den Branch sofort, unabhängig davon, ob er zusammengeführt ist oder nicht. Ich würde dringend empfehlen, dabei Vorsicht walten zu lassen. Alle unmerged Arbeiten gehen verloren, es sei denn, Sie haben ein Backup oder einen anderen Branch, der auf dieselben Commits verweist.
Überprüfung auf unmerged Änderungen vor dem Löschen
Bevor Sie an den Punkt gelangen, einen Branch zu löschen, ist es eine gute Idee zu überprüfen, ob er unmerged Änderungen hat. Sie können dies mit:
git branch --no-merged
Der obige Befehl listet alle Zweige auf, die nicht in den aktuellen Zweig zusammengeführt wurden. Wenn derjenige, den Sie löschen möchten, in dieser Liste erscheint, überprüfen Sie bitte erneut, ob Sie Änderungen daraus benötigen, bevor Sie fortfahren.
Benötigen Sie eine schnelle Referenz für Git-Befehle, einschließlich des Löschens von Zweigen? Laden Sie das praktische Git-Spickzettel herunter.
Ein Entfernen eines Remote-Git-Zweigs
Das Löschen eines Remote-Zweigs unterscheidet sich etwas vom Löschen eines lokalen Zweigs. Da Remote-Zweige in gemeinsamen Repositories existieren, hilft das Entfernen, die Dinge organisiert zu halten und verhindert, dass veraltete Zweige die Team-Workflows stören.
Der grundlegende Befehl zum Löschen eines Remote-Zweigs
Um einen Zweig aus einem Remote-Repository wie GitHub, GitLab oder Bitbucket zu löschen, verwenden Sie:
git push origin --delete <branch_name>
Dieser Befehl entfernt die Verzweigungsreferenz aus dem Remote-Repository, wodurch sie für andere unzugänglich wird. Lokale Kopien des Branches auf anderen Maschinen sind jedoch nicht betroffen und müssen separat bereinigt werden.
Überprüfung der Löschung eines Remote-Branches
Nachdem Sie einen Remote-Branch gelöscht haben, müssen Sie bestätigen, dass er tatsächlich verschwunden ist. Zuerst holen Sie sich die neuesten Updates vom Remote-Repository:
git fetch --prune
Dies entfernt veraltete Remote-Tracking-Referenzen. Um zu überprüfen, dass der Branch nicht mehr aufgeführt ist, führen Sie Folgendes aus:
git branch -r
Der obige Befehl zeigt alle verbleibenden Remote-Branches an. Wenn der gelöschte Branch weiterhin angezeigt wird, versuchen Sie es mit einem weiteren git fetch --prune
oder stellen Sie sicher, dass der Löschbefehl auf dem richtigen Remote ausgeführt wurde.
Best Practices für das Löschen von Git-Branches
Das Löschen von Branches ist ein routinemäßiger Teil der Arbeit mit Git, aber es auf die richtige Weise zu tun, kann Sie vor unnötigen Kopfschmerzen bewahren. Hier sind einige bewährte Methoden, um Ihr Repository organisiert zu halten und potenzielle Fehler zu vermeiden.
Vermeiden Sie es, unverschmolzene Branches voreilig zu löschen
Bevor Sie einen Branch löschen, stellen Sie sicher, dass er keine unverschmolzene Arbeit enthält, die noch benötigt wird. Wenn Sie unsicher sind, überprüfen Sie seinen Status mit:
git branch --no-merged
Wenn der Branch wertvolle Änderungen enthält, die noch nicht verschmolzen wurden, erwägen Sie, sie zuerst zu verschmelzen oder zu archivieren, anstatt sie sofort zu löschen.
Löschen nach dem Verschmelzen
Sobald ein Feature oder eine Korrektur in den Hauptbranch (main
oder master
) verschmolzen wurde, gibt es keinen Grund, den alten Branch weiterhin zu behalten. Das Löschen verschmolzener Branches hilft, Unordnung zu vermeiden und macht es einfacher zu erkennen, welche Branches noch aktiv sind.
Kommunizieren Sie mit Ihrem Team
Als professionelle Höflichkeit sollten Sie beim Arbeiten an einem gemeinsamen Projekt vermeiden, einen Branch zu löschen, ohne Ihr Team zu warnen. Es kann zu Verwirrung führen oder schlimmer noch, die Arbeit eines anderen stören. Bevor Sie einen Remote-Branch entfernen, überprüfen Sie mit Ihrem Team, ob ihn noch jemand verwendet. Ich bevorzuge eine einfache Slack-Nachricht oder Notiz, um Frustration zu vermeiden.
Bevor Sie einen Branch löschen, möchten Sie vielleicht Ihre Commit-Historie aufräumen, indem Sie Commits zusammenfassen. Erfahren Sie, wie das geht in unserem Git Squash Commits Tutorial.
Häufige Probleme beim Löschen von Git-Branches
Das Löschen von Branches in Git ist normalerweise problemlos, aber es gibt einige häufige Fallstricke, die Sie stolpern lassen können. Hier ist, worauf Sie achten sollten und wie Sie mit diesen Problemen umgehen können, falls sie auftreten.
Das Löschen eines Branches, der nicht vollständig zusammengeführt wurde
Wenn Sie versuchen, einen Branch zu löschen, der noch nicht zusammengeführte Änderungen enthält, indem Sie git branch -d
verwenden, wird Git Sie daran hindern, um potenziellen Datenverlust zu vermeiden. Dies ist eine Sicherheitsmaßnahme. Alle nicht zusammengeführten Arbeiten gehen verloren, wenn Sie ihn mit -D
zwangsweise löschen.
Wenn Sie bereits einen Branch gelöscht haben und feststellen, dass Sie ihn zurück benötigen, können Sie versuchen, ihn mit Gits reflog
wiederherzustellen:
git reflog git checkout -b <branch_name> <commit_hash>
Dies ermöglicht es Ihnen, den Branch aus seinem letzten bekannten Commit wiederherzustellen, wenn er nicht vollständig durch die Müllsammlung verloren gegangen ist.
Den aktuellen Branch löschen
Git lässt Sie den Branch, auf dem Sie sich gerade befinden, nicht löschen, was sinnvoll ist, da Sie sonst ohne aktiven Branch dastehen würden. Wenn Sie beim Versuch, einen Branch zu löschen, einen Fehler sehen, wechseln Sie zuerst zu einem anderen Branch:
git checkout main
Oder, wenn Sie Git 2.23+ verwenden:
git switch main
Sobald Sie sich auf einem anderen Branch befinden, können Sie denjenigen, den Sie entfernen wollten, sicher löschen.
Müssen Sie zwischen Branches wechseln, bevor Sie einen löschen? Unser Leitfaden zum Auschecken eines Remote-Branches in Git führt Sie durch den Prozess.
Versehentliches Löschen eines Remote-Branches
Wenn ein Remote-Branch versehentlich gelöscht wurde, können Sie ihn wiederherstellen (vorausgesetzt, Sie haben noch eine lokale Kopie), indem Sie ihn zurück auf den Remote-Server pushen:
git push origin <deleted_branch_name>
Dadurch wird der Branch im Remote-Repository neu erstellt und der Zugriff für Mitarbeiter wiederhergestellt. Wenn keine lokale Kopie vorhanden ist, müssen Sie möglicherweise manuell Ihren Commit-Verlauf überprüfen und den Branch neu erstellen.
Warum kann ich einen Git-Branch nicht löschen?
Wenn Sie Probleme haben, einen Branch in Git zu löschen, überprüfen Sie die häufigsten Probleme: Stellen Sie sicher, dass er vollständig zusammengeführt ist, dass Sie sich derzeit nicht auf dem Branch befinden oder dass es sich um einen Remote-Branch handelt. Von hier aus könnten es Ihre Einstellungen oder Berechtigungen sein.
- Das erste, was Sie überprüfen sollten, ist, ob Sie sich derzeit auf diesem Branch befinden. Git lässt Sie keinen Branch löschen, an dem Sie aktiv arbeiten, daher müssen Sie zuerst zu einem anderen Branch wechseln.
- Wenn das nicht das Problem ist, könnte der Branch noch nicht zusammengeführte Änderungen enthalten. Git schützt Branches mit nicht zusammengeführter Arbeit, also müssen Sie den Branch zusammenführen oder mit
git branch -D branch-name
zwangsweise löschen, es sei denn, Sie sind sich absolut sicher, dass Sie diese Änderungen nicht benötigen. - Wenn Sie versuchen, einen Remote-Zweig zu löschen, wird ein einfaches
git branch -d
nicht ausreichen. Stattdessen müssen Siegit push origin --delete branch-name
ausführen, und um alte Referenzen zu bereinigen, können Siegit fetch --prune
verwenden. - Einige Repositories, insbesondere solche, die auf Plattformen wie GitHub oder GitLab gehostet werden, haben geschützte Zweige, die nicht gelöscht werden können, ohne die Einstellungen zu ändern. Wenn Sie in einem gemeinsamen Repository arbeiten, benötigen Sie möglicherweise auch die richtigen Berechtigungen, um Zweige zu löschen.
Immer noch festgefahren? Mit git branch -v
können Sie mehr Details zum Status des Zweigs erhalten und herausfinden, was los ist, bevor Sie es erneut versuchen.
Automatisierung der Zweigbereinigung mit Git
Ich liebe gute Automatisierung. Während das manuelle Löschen von Branches gut funktioniert und man verstehen sollte, wie es geht, gibt es einen anderen Weg. Wenn man mit vielen Branches zu tun hat (wie in einem Teamkontext), kann Automatisierung Zeit sparen und die Dinge ordentlicher halten. Git bietet einige Möglichkeiten, um die Bereinigung von Branches zu optimieren und Unordnung ohne zusätzlichen Aufwand zu reduzieren.
Automatisiere die Bereinigung von Remote-Branches
Wenn ein Remote-Branch gelöscht wird, hält dein lokales Git weiterhin eine Referenz darauf, bis du die Dinge manuell aktualisierst. Anstatt sie einzeln zu bereinigen, kannst du Folgendes verwenden:
git fetch --prune
Der obige Befehl entfernt automatisch lokale Referenzen zu Branches, die im Remote-Repository nicht mehr existieren, und hält alles synchron. Regelmäßiges Ausführen dieser Aktion verhindert, dass veraltete Branches sich in deinem lokalen Repository ansammeln.
Verwende Git-Hooks zur Bereinigung
Für Teams oder größere Projekte können Git Hooks dabei helfen, den Branch-Bereinigungsprozess zu automatisieren. Hooks sind benutzerdefinierte Skripte, die an bestimmten Punkten im Git-Workflow ausgeführt werden, z.B. nach dem Zusammenführen eines Branches. Sie können einen Post-Merge-Hook konfigurieren, um automatisch gemergte Branches nach einer festgelegten Zeit zu löschen und sicherzustellen, dass alte Branches nicht unnötig bestehen bleiben.
Conclusion
Branches können im Laufe der Zeit unübersichtlich werden, aber mit ein wenig „Aufräumen“ halten Sie Ihr Repository sauber und Ihren Workflow effizient. Indem Sie sich angewöhnen, gemergte Branches zu löschen, nicht gemergte zu überprüfen und die Kommunikation in Teamprojekten offen zu halten, können Sie diese Probleme vermeiden. Und wenn Sie einen Schritt weiter gehen möchten, können Automatisierungstools wie git fetch --prune
und Git Hooks dabei helfen, Ihr Repository sauber zu halten, ohne zusätzlichen Aufwand.
Das Löschen von Branches ist nur ein Schritt zur Beherrschung von Git. Um Ihr Verständnis von Versionskontrolle zu vertiefen, schauen Sie sich den Intermediate Git-Kurs an. Wenn Sie mit GitHub-Repositories arbeiten, ist ein solides Verständnis der Kernkonzepte von GitHub unerlässlich. Erfahren Sie mehr im Kurs Einführung in die GitHub-Konzepte!