So löschen Sie einen Zweig in Git lokal und remote
Eines der stärksten Merkmale von Git sind seine leichten Zweige. Mit ihnen können Sie effizient an parallelen Entwicklungsstufen arbeiten. Ein Entwickler kann sogar einzelne Zweige für separate Fehler erstellen. Sowohl zeitlich als auch räumlich sind Filialen nahezu kostenlos.
Viele Git-Workflows befassen sich sowohl mit langfristigen als auch mit temporären Zweigen. Daher besteht häufig die Notwendigkeit, Zweige während der Entwicklung zu löschen. Gelegentlich müssen gemeinsam genutzte Zweige von einem Remoteserver sowie lokale Zweige gelöscht werden.
Warum einen Zweig löschen?
Erstens, wenn Sie sich immer noch mit Git auseinandersetzen , besteht eine gute Chance, dass Sie einen Zweig erstellen und dann entscheiden, dass Sie das nicht müssen. Oder Sie experimentieren mit Zweigen und möchten nach sich selbst aufräumen. Dies ist in Ordnung, da das Verzweigen in Git eine leichte Operation ist. Es ist sehr schnell und nutzt den Speicherplatz effizient.
Infolgedessen fördern viele Workflows zur Git-Entwicklung die Verzweigung, selbst bei sehr kleinen oder kurzen Aufgaben. Eine gängige Strategie besteht beispielsweise darin , einen Zweig für eine einzelne Fehlerbehebung zu erstellen . Dies gilt auch dann, wenn nur ein einzelner Autor eine einzeilige Änderung in einer einzelnen Datei vornimmt.
Aus diesen Gründen sind das Erstellen und Löschen von Zweigen Vorgänge, die gut verstanden werden müssen. Während eines typischen Entwicklungsworkflows werden möglicherweise häufig Zweige gelöscht.
Ein Beispiel-Repository mit Zweigen
Die folgenden Beispiele beziehen sich auf ein Beispiel-Repository mit der folgenden Struktur:
$ git branch -vv
1 dev 1ae41e8 [origin/dev] first commit
2 * main 1ae41e8 [origin/main] first commit
Beachten Sie, dass jeder lokale Zweig einen entsprechenden Upstream-Zweig vom Remote- Ursprung hat .
Löschen eines Zweigs über die Befehlszeile
Die grundlegende Befehlssyntax zum Löschen eines Zweigs lautet:
git branch (-d | -D) [-r] <branchname>...
Die einfachste Form des Befehls löscht einen lokalen Zweig, sofern alle Änderungen zusammengeführt wurden:
$ git branch -d dev
Sie können den aktuell aktiven Zweig nicht löschen. Wenn Sie dies versuchen, erhalten Sie eine Meldung wie die folgende:
error: Cannot delete branch 'main' checked out at '/tmp/sandbox'
Wenn alles richtig läuft, wird eine Bestätigungsmeldung angezeigt:
Deleted branch dev (was 1ae41e8).
Wenn Sie einen Zweig löschen, der nur lokal mit nicht zusammengeführten Änderungen vorhanden ist, gehen diese Änderungen verloren. Daher weigert sich git in einer solchen Situation standardmäßig, einen Zweig zu löschen:
error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.
Wie die Fehlermeldung mitteilt, können Sie das Löschen mit dem Flag -D erzwingen. Mit git können Sie jedoch einen nicht zusammengeführten lokalen Zweig löschen, wenn dieser remote vorhanden ist:
warning: deleting branch 'dev' that has been merged to
'refs/remotes/origin/dev', but not yet merged to HEAD.
Deleted branch dev (was 9a6d20b).
Das Löschen eines Remote-Zweigs ist ganz anders. Zum Löschen verwenden Sie den Befehl git push zusammen mit dem Flag -d . Geben Sie danach den Namen der Fernbedienung (häufig Herkunft ) und den Zweigstellennamen an:
$ git push -d origin dev
To github.com:bobbykjack/sandbox.git
- [deleted] dev
Löschen lokaler und entfernter Zweige mit GitHub Desktop
Im Gegensatz zum Befehlszeilen-Git-Programm können Sie mit der Desktop-App von GitHub nur den aktiven Zweig löschen. Sie können diese Aktion über das Menü Verzweigen ausführen, indem Sie die Option Löschen auswählen und bestätigen:
Mit GitHub Desktop können Sie den Standardzweig – z. B. main – nicht löschen, obwohl git selbst dies unterstützt. Wenn der Standardzweig derjenige ist, der gerade aktiv ist, deaktiviert die App die Menüaktion.
Wenn der Zweig auch einen Remote-Zweig darstellt, bietet GitHub Desktop die Möglichkeit, ihn auch von der Remote zu löschen:
Löschen von Zweigen mit GitKraken
GitKraken zeigt die lokalen und Remote-Zweige Ihres Repositorys in der linken Seitenleiste an. Sie müssen jedes einzeln löschen.
Bewegen Sie den Mauszeiger über den entsprechenden Verzweigungsnamen und klicken Sie auf das Menü Verzweigungsaktionen , das wie drei vertikale Punkte aussieht. Wählen Sie im Menü die Option <Zweigname> löschen :
Sie erhalten eine Bestätigungsmeldung, die Sie darüber informiert, dass dies eine destruktive Operation ist. Sie können bestätigen, dass Sie mit der Schaltfläche Löschen fortfahren möchten:
Um das Standardverhalten des git-Befehlszeilenprogramms widerzuspiegeln, müssen Sie zuerst zu einem anderen Zweig als dem, den Sie löschen, wechseln . Andernfalls wird eine Fehlermeldung angezeigt:
Löschen lokaler und entfernter Zweige mit Tower
Das Löschen eines Zweigs mit Tower ist dem Löschen eines Zweigs mit GitKraken sehr ähnlich. Lokale und entfernte Zweige werden in einem Feld auf der linken Seite angezeigt. Klicken Sie mit der rechten Maustaste auf einen Zweig und wählen Sie im Kontextmenü die Option Löschen:
Ein wesentlicher Unterschied besteht darin, dass ein Remote-Zweig zusammen mit seinem lokalen Zweig während der Bestätigung gelöscht werden kann:
Löschen eines Zweigs auf GitHub
GitHub fungiert nur als Remote-Quelle, daher sind Zweige dort standardmäßig Remote. Wenn Sie einen Zweig über die GitHub-Website löschen, müssen Sie den entsprechenden lokalen Zweig mit einer der anderen Methoden hier löschen.
Wie bei der GitHub Desktop-App können Sie auf der GitHub-Website den Standardzweig nicht löschen. Die Option wird einfach nicht angezeigt. Das Löschen eines Zweigs ist jedoch unkompliziert. Von der Codepage des Repositorys, klicken Sie auf den Zweig Link, suchen Sie den Zweig zu löschen, klicken Sie auf das diesen Zweig Symbol löschen, die aussehen wie ein Mülleimer:
Beachten Sie, dass keine Überprüfungen auf nicht zusammengeführte Änderungen vorgenommen werden. Auf GitHub wird der Zweig einfach sofort gelöscht. Da es sich jedoch immer um einen Remote-Zweig handelt, sollte dies das erwartete Verhalten sein.
Beachten Sie, dass nach dem Löschen eine Schaltfläche zum Wiederherstellen des Zweigs angezeigt wird . Dies ist jedoch nur eine nützliche Funktion zum Rückgängigmachen, falls Sie versehentlich auf das Löschsymbol klicken. Verlassen Sie sich nicht darauf, denn sobald Sie die Seite aktualisieren oder von ihr weg navigieren, verlieren Sie die Option!
Löschen lokaler und entfernter Zweige auf Bitbucket
Mit Bitbucket können Sie wie mit GitHub den Standardzweig nicht löschen. Bitbucket nennt dies den Hauptzweig in den Repository-Einstellungen . Sie können jeden anderen Zweig, der auf der Registerkarte Zweige aufgeführt ist , über das entsprechende Menü Aktionen löschen:
Sie können auch mehrere Zweige gleichzeitig löschen, wenn Sie einen großen Bereinigungsvorgang ausführen:
Das Löschen von Zweigen ist Teil eines typischen Git-Workflows
Git-Zweige können Ihren Workflow erschweren, insbesondere solche mit lokalen, Remote- und Tracking-Zweigen. Für eine einfache tägliche Entwicklung erstellen und löschen Sie wahrscheinlich ständig lokale Niederlassungen. Dies ist ein zentraler Aspekt eines typischen Git-Workflows, an den Sie sich gewöhnen sollten.