Git ist eine fantastische Möglichkeit, die Versionskontrolle in ein Programmierprojekt zu integrieren – so fantastisch, dass es fast schon eine Pflichtoption ist.

Die Idee ist, dass du doppelte Zweige deines Haupt-Repositorys erstellst, an dem Code arbeitest und die Änderungen dann wieder mit dem Rest zusammenführst. Das bedeutet, dass du eine Menge alter Zweige in deinem Repository hast. Auch wenn die Dateigröße dieser Zweige oft gering ist, solltest du dennoch eine git delete auf einem lokalen Zweig durchführen, um Ordnung zu halten.

Die gute Nachricht ist, dass dies nicht viel Aufwand erfordert. Allerdings musst du dir überlegen, wie du am besten vorgehst, je nachdem, ob du die Änderungen zusammenführst und was du tust, wenn du beim Löschen einen Fehler bekommst. Vielleicht musst du sogar einen gelöschten Zweig wiederherstellen. Jedes dieser Szenarien erfordert unterschiedliche Fähigkeiten und Befehle.

In diesem Leitfaden zeigen wir dir, wie du einen lokalen Zweig mit Git löschst. Zunächst werden wir aber einige Gründe nennen, warum du lokale Zweige in Git löschen möchtest.

Was ist ein Git-Zweig?

Git-Repositories sind eine Sammlung von Zweigen – Duplikate des Kerncodes darin. Tatsächlich gibt es kein funktionierendes Git-Repository ohne einen Zweig.

Oft hast du ein primäres Repository (die Namen lauten „main“ und „trunk“). Dieses enthält funktionierenden Produktionscode, den du nicht bearbeiten willst. Stattdessen erstellst du einen doppelten Zweig des Haupt-Repos und nimmst dann die gewünschten Änderungen in deinem Zweig vor. Wenn es an der Zeit ist, diese Änderungen wieder in den Kerncode einzubringen, prüfst du sie und führst sie zusammen.

Mit Zweigen können alle Mitglieder eines Teams unabhängig voneinander an demselben Projekt arbeiten. Außerdem besteht nicht die Gefahr, dass du in der Zwischenzeit eine Änderung am Arbeitscode vornimmst oder auf andere Änderungen einsteigst.

Allerdings musst du auch eine git delete auf einem lokalen Zweig durchführen. Das wird eine regelmäßige Aktion für dich sein und es gibt eine Reihe guter Gründe dafür.

Warum Verzweigungen in Git entfernen?

Dein Produktionscode befindet sich im Hauptzweig. Das ist der einzige Zweig, der eine gewisse Beständigkeit hat.

Im Gegensatz dazu haben fast alle anderen Zweige, die du erstellst, nur eine vorübergehende Lebensdauer. Sobald du deine Arbeit abgeschlossen hast, übergibst du die Änderungen und überlegst dir dann, wie du sie mit dem Hauptzweig zusammenführen kannst, möglicherweise in einem Online-Repository wie GitHub.

Das bedeutet, dass du je nach Projekt und Team oft mehrere Zweige gleichzeitig geöffnet hast. Sobald du die Zusammenführung abgeschlossen hast, verschwinden diese Zweige jedoch nicht.

Es gibt also einige Gründe, warum du einen lokalen Git-Zweig löschen solltest:

  • Allgemeine Haushaltsführung: Wenn du zu Hause mit dem Kochen fertig bist, wäschst du die Utensilien ab und räumst sie weg. Das Gleiche gilt für die Arbeit mit einem Git-Projektarchiv: Wenn du deine Arbeit beendet hast, führst du die Änderungen zusammen und löschst alle Zweige, die du nicht mehr brauchst. Dadurch werden dein Projekt und dein Projektarchiv auch übersichtlicher.
  • Größe der Repository-Datei: Obwohl Git-Repos oft so klein sind, dass sie keinen Einfluss auf die Größe eines Projekts haben, solltest du sie trotzdem im Auge behalten. Eine Möglichkeit, die Größe eines Repos zu reduzieren, ist das Löschen von Zweigen, die du nicht brauchst.
  • Potenzielle Leistung: Auch wenn dein Kerncode performant ist, kann es sein, dass ein Zweig nicht performant ist, wenn du an ihm arbeitest. Deshalb solltest du offene Zweige auf ein Minimum beschränken. Andernfalls könnte die Leistung deines Teams beeinträchtigt werden, bis du ein Projekt überarbeitest und optimierst.

Wie du später sehen wirst, ist die Durchführung einer git delete auf einem lokalen Zweig in den meisten Fällen einfach. Allerdings solltest du wissen, was unter der Haube passiert, wenn du diesen Befehl verwendest, denn er löscht nicht alles, was mit dem Zweig zu tun hat, aus deinem Projektarchiv.

Was passiert, wenn du einen lokalen Git-Zweig löschst?

Technisch gesehen ist ein Zweig nur ein Verweis auf einen bestimmten Commit – einen Abschnitt des Codes, den du in deinen Hauptzweig aufnehmen willst. Wenn du einen lokalen Git-Zweig löschst, bleiben die Commits daher erhalten.

Später werden wir über die Wiederherstellung von Zweigen sprechen und darüber, was möglich ist, wenn diese Commits in deinem Repo verbleiben. Bis dahin solltest du wissen, dass es zwei verschiedene Arten von Änderungen gibt:

  • Zusammengeführte Änderungen: Sobald du einen Zweig mit dem Hauptzweig zusammenführst, ist der Code so aktuell wie möglich. Technisch gesehen ist das so, als würdest du den Verweis auf den Hauptzweig verschieben, damit er mit deinem Nebenzweig gleichzieht.
  • Nicht zusammengeführte Änderungen: Wenn du die Änderungen nicht zusammenführst, hast du einen Zweig, der nicht so aktuell ist wie der Hauptzweig. Der Hauptzweig hat dann keinen aktuellen Referenz-Commit.

Darüber werden wir später noch ausführlicher sprechen. Unabhängig davon ist dies ein weiterer guter Hinweis darauf, wann man Zweige löschen sollte.

Wann sollte man einen lokalen Zweig mit Git löschen?

Da es gefährlich ist, einen Zweig mit nicht zusammengefassten Änderungen zu löschen, ist es wichtig, git delete erst dann auf einem lokalen Zweig auszuführen, wenn du einen Code Merge durchführst. So wird sichergestellt, dass jeder Zweig eine aktuelle Referenz und damit den aktuellsten verfügbaren Code hat.

Außerdem solltest du sicherstellen, dass du keinen der Commits in einem temporären Zweig benötigst, bevor du eine git delete durchführst. Zwar kannst du Zweige bis zu einem gewissen Grad wiederherstellen, aber das ist eine Arbeit, die du wenn möglich vermeiden willst. Wir geben dir später einen Einblick in dieses Thema.

So führst du ein „Git Delete“ an einem lokalen Zweig durch

Im weiteren Verlauf dieses Leitfadens zeigen wir dir, wie du eine git delete auf einem lokalen Zweig durchführst. Wir werden auch darüber sprechen, was du mit nicht gemergten Änderungen machst.

Danach gehen wir auf mögliche Fehler ein und zeigen dir, wie du einen gelöschten lokalen Zweig wiederherstellen kannst.

Zum Schluss werfen wir noch einen kurzen Blick auf remote Zweige und wie du sie löschen kannst.

Voraussetzungen

Git selbst bietet einen einfachen Satz von Befehlen und gibt dir viele Möglichkeiten, ohne dass du ein Lehrbuch aufschlagen musst. Trotzdem gibt es verschiedene Möglichkeiten, auf ein Git-Repository zuzugreifen, je nachdem, welche Anwendung und welchen Code-Editor du benutzt.

Während du mit einer speziellen grafischen Benutzeroberfläche (GUI) wie GitKraken oder Sublime Merge eine „Minimal-Klick“-Variante finden könntest, werden wir die Dinge einfach halten und in das Betriebssystem integrierte Tools verwenden.

Um mitzumachen, brauchst du Folgendes:

  • Zugriff auf die Kommandozeile: In unseren Beispielen werden wir macOS und iTerm verwenden. Du kannst aber auch Cmder für Windows, das Standard-Terminal von macOS, das gleiche unter Linux und mehr verwenden.
  • Zugang zu deinen spezifischen Dateien: Du solltest deine Projektdateien auf deinem lokalen Computer haben, denn ohne sie kannst du nichts tun!
  • Kommandozeilen-Kenntnisse: Es ist hilfreich, wenn du dich mit der Kommandozeile auskennst – insbesondere mit den Befehlen, die dir helfen, durch deine Dateien zu navigieren, und wenn du weißt, wie die Kommandozeile funktioniert.

Wenn du ein Projekt mit einem Git-Repository und ein Terminal-Fenster deiner Wahl hast, ist das eigentlich alles, was du brauchst.

Ein simples „Git Delete“ durchführen

Wir gehen zunächst davon aus, dass du einen Zweig mit zusammengeführten Änderungen löschen willst. Das ist die einfachste und typischste Vorgehensweise.

Möglicherweise musst du jedoch zuerst git branch -a oder git branch --list aufrufen, um alle Zweige zu sehen und den richtigen Zweig in deinem Projektarchiv zu finden:

Ein Teil des Terminal-Fensters mit einem macOS-Hintergrund mit Farbverlauf, der dem Benutzer eine Liste der aktuellen Zweige in einem lokalen Repository zeigt.
Auflisten von Zweigen in einem lokalen Git-Repository

Hier ist der Befehl, den du brauchst, um einen Zweig zu löschen:

git branch -d branch-name

Du solltest den Namen der Verzweigung verwenden und nicht unseren Platzhalter.

-d steht hier für „delete“ (löschen), und in der klein geschriebenen Form hast du einen gewissen Schutz davor, einen Zweig mit nicht zusammengeführten Änderungen zu löschen.

Wenn du versuchst, einen nicht gemerkten Zweig zu löschen, bekommst du eine Fehlermeldung (eigentlich eher eine Warnung):

Ein partielles Terminal-Fenster auf macOS mit einem Hintergrund mit Farbverlauf. Der Benutzer führt einen Befehl aus, um einen Zweig zu löschen, aber es erscheint eine Fehlermeldung:
Du versuchst, einen Zweig mit nicht zusammengeführten Änderungen in einem Git-Repository zu löschen

Du kannst das Flag jedoch mit -D großschreiben und diese Warnung überspringen. So kannst du einen Zweig mit nicht zusammengeführten Änderungen löschen.

Beachte, dass du keine Bestätigung zum Löschen des Zweigs erhältst, wenn du die großgeschriebene Version verwendest, also solltest du dieses Flag mit Bedacht verwenden.

Was ist die Ursache für den Fehler „Zweig kann nicht gelöscht werden“?

Weil das Löschen eines Zweigs deines Repos eine große Entscheidung ist, für die es keine einfache Lösung gibt, meldet Git Fehler, wenn du einen falschen Schritt machst.

So kann es vorkommen, dass du eine git delete auf einem lokalen Zweig ausführen willst und die Fehlermeldung „Cannot delete branch“ erhältst:

Ein Teil des Terminal-Fensters mit einem macOS-Hintergrund mit Farbverlauf. Der Benutzer listet die aktuellen Zweige im Repo auf, checkt einen Zweig aus und versucht dann, ihn zu löschen, was zu einem Fehler führt. Er lautet:
Wenn du versuchst, einen Zweig in einem Git-Repository zu löschen, siehst du eine Fehlermeldung

Das liegt ganz einfach an deiner aktuellen Position im Git Repo. Du kannst einen Zweig, den du „ausgecheckt“ hast, nicht löschen.

Die Lösung ist, zu einem anderen Zweig zu wechseln.

Aus diesem Grund empfehlen wir dir, immer in den Zweig main auszuchecken. Auf diese Weise erhältst du eine Fehlermeldung, wenn du versuchst, main zu löschen, und kannst auch alle anderen Zweige im Repo löschen.

Wie du einen gelöschten lokalen Git-Zweig wiederherstellst

Da ein Commit bestehen bleibt, nachdem du einen lokalen Zweig gelöscht hast, gibt es eine kleine Möglichkeit, einen Zweig wiederherzustellen, nachdem du einen git delete durchgeführt hast. Das ist jedoch mühsamer, als die Änderungen zuerst zusammenzuführen. In diesem Fall weißt du, dass du den Zweig nicht mehr brauchst.

Jeder Commit verwendet eine Hash-Nummer, die als Referenz dient. Mit diesem Hash kannst du auschecken und einen neuen Zweig erstellen:

Ein Teil des Terminalfensters unter macOS zeigt einen Benutzer, der die Befehle
Anzeige der kurzen und langen Version eines Referenz-Hashes für eine Übertragung in Git

Wenn du jedoch den Hash eines gelöschten Zweigs nicht kennst, kannst du den Befehl reflog verwenden. Diese „Referenzprotokolle“ ähneln denen, die du in Anwendungen wie DevKinsta findest.

Obwohl die Verwendung von git reflog ein Thema für einen anderen Artikel ist, kannst du die Grundfunktionalität nutzen, um den Hash von alten Commits zu finden. Wenn du git reflog aufrufst, erhältst du eine Liste der Commits:

Ein Teil des Terminal-Fensters unter macOS zeigt den Benutzer, der einen
Ein Terminal-Fenster, das einen git reflog-Befehl ausführt und die Ergebnisse ausgibt

In der ersten Spalte der Hashes kannst du den Commit auschecken und einen neuen Branch erstellen. Zum Beispiel:

git checkout 5744ff6
git branch f9d2db5

Das ist jedoch kein idiotensicherer Weg, um einen gelöschten Zweig in Git wiederherzustellen.

In manchen Fällen gibt es keinen Commit im Reflog und auch keinen HEAD Verweis auf den Commit selbst. Deshalb ist es besser, mit deinen Zweigen auf sicherere Weise zu arbeiten, indem du Änderungen zusammenführst, bevor du einen git delete auf einem lokalen Zweig durchführst.

Arbeiten mit remoten Git-Zweigen

Wenn du eine git delete auf einem lokalen Zweig durchführst, hast du oft auch ein zugehöriges Remote Repo. Das gilt vor allem, wenn du deine Website mit Git auf Kinsta herunterlädst.

Wenn du Änderungen vornimmst, wird dein lokales Projektarchiv nicht aktualisiert, und das gilt auch, wenn du einen lokalen Zweig löschst.
Sowohl GitHub als auch GitLab haben jedoch den gleichen Prozess, um einen remoten Git-Zweig zu löschen. Es ist ein ähnlicher Ansatz wie bei jedem anderen Push „Upstream“

Hier ist der Befehl:

git push remote-name -d remote-branch

Für die remote-name verwenden die meisten Repos „origin“ Der Verweis remote-branch ist derselbe wie der lokale Zweig (es sei denn, du benennst einen lokalen Zweig um, was den Rahmen dieses Artikels sprengen würde)

Nebenbei bemerkt, kannst du alle Zweige – sowohl lokale als auch remote – mit git branch -a einsehen. Wenn du nur die remoten Zweige sehen willst, kannst du git branch -r verwenden.

Nachdem du den Befehl ausgeführt hast, erhältst du eine Bestätigungsmeldung. Danach solltest du git branch -a erneut ausführen, um zu überprüfen, ob alles wie erwartet entfernt wurde.

Zusammenfassung

Git ist eines der wenigen Tools, das dir mit verständlichen und intuitiven Befehlen viel Macht unter der Haube gibt. Das gilt auch für das Entfernen von Zweigen, die du auf deinem lokalen Rechner nicht mehr brauchst. Trotzdem musst du aufpassen, wenn du einen lokalen Zweig mit Git löschen willst.

Denn wenn du versuchst, nicht zusammengeführte Änderungen zu löschen, bekommst du entweder eine Fehlermeldung oder du entfernst etwas, das sich auf deine zukünftige Projektarbeit auswirkt. Darüber hinaus musst du auch den remoten Zweig löschen. Sowohl dein lokales als auch dein remotes Repository müssen gut gepflegt werden, um die Leistung hoch und die Dateigröße gering zu halten.

Auch wenn du auf dich allein gestellt bist, wenn du versehentlich einen Git-Zweig löschst, hält dir Kinsta mit dem Anwendungs-Hosting den Rücken frei. Mit der Kinsta-Hosting-Plattform kannst du dich in wenigen Minuten mit deinen GitHub-Repos verbinden und diese bereitstellen. Außerdem erhältst du Zugang zu den C2-Maschinen und dem Premium Tier Network von Google sowie zu unserer Cloudflare-Integration, um deine Apps auf die nächste Stufe der Geschwindigkeit und Sicherheit zu heben.