Einführung
In diesem Lab werden wir den häufigen Fehler "cannot delete branch checked out" in Git untersuchen und eine Schritt-für-Schritt-Anleitung zur Behebung geben. Das Verständnis von Git-Branches und deren Verwaltung ist für die Pflege eines sauberen und organisierten Repositorys unerlässlich. Am Ende dieses Labs werden Sie in der Lage sein, den aktuellen Branch zu identifizieren und Branches in Git sicher zu löschen, um einen reibungslosen und effizienten Git-Workflow zu gewährleisten.
Einrichten unserer Git-Umgebung
In diesem Schritt werden wir uns mit dem Git-Repository vertraut machen, das für dieses Lab eingerichtet wurde. Wir werden die Repository-Struktur untersuchen und die vorhandenen Branches kennenlernen.
Navigieren zum Projektverzeichnis
Zuerst navigieren wir zum Projektverzeichnis, in dem sich unser Git-Repository befindet:
cd ~/project/git-branch-demo
Überprüfen des Repository-Status
Um den Status unseres Git-Repositorys zu überprüfen, können wir den Befehl git status verwenden:
git status
Sie sollten eine ähnliche Ausgabe sehen wie:
On branch master
nothing to commit, working tree clean
Dies zeigt an, dass wir uns derzeit auf dem master-Branch befinden und keine uncommitteten Änderungen vorliegen.
Auflisten der vorhandenen Branches
Lassen Sie uns alle Branches in unserem Repository auflisten, um zu sehen, womit wir arbeiten:
git branch
Die Ausgabe sollte alle Branches anzeigen, mit einem Sternchen (*) neben dem aktuell ausgecheckten Branch:
bugfix-branch
feature-branch
* master
Dies zeigt, dass unser Repository drei Branches hat: master, feature-branch und bugfix-branch. Das Sternchen zeigt an, dass wir uns derzeit auf dem master-Branch befinden.
Grundlagen des Branch-Verständnisses
Ein Git-Branch ist eine separate Entwicklungslinie in Ihrem Repository. Branches ermöglichen es Ihnen, an verschiedenen Funktionen oder Korrekturen zu arbeiten, ohne die Hauptcodebasis zu beeinträchtigen. Einige wichtige Punkte zu Branches:
- Jeder Branch zeigt auf einen bestimmten Commit in Ihrem Repository
- Der Standard-Branch heißt typischerweise
master(odermainin neueren Repositories) - Sie können Branches erstellen, zwischen ihnen wechseln, sie zusammenführen und löschen
- Branches sind leichtgewichtig und einfach zu verwalten
Nachdem wir nun unsere Repository-Struktur und die vorhandenen Branches verstanden haben, sind wir bereit, in den nächsten Schritten zu untersuchen, wie man diese Branches verwaltet.
Erstellen und Wechseln zwischen Branches
In diesem Schritt lernen wir, wie man einen neuen Branch erstellt, zwischen Branches wechselt und versteht, wie Git den aktuell ausgecheckten Branch verfolgt.
Erstellen eines neuen Branch
Lassen Sie uns einen neuen Branch für eine hypothetische Funktion erstellen, an der wir arbeiten:
git branch new-feature
Dieser Befehl erstellt einen neuen Branch namens new-feature, wechselt aber nicht zu ihm. Lassen Sie uns überprüfen, ob der Branch erstellt wurde:
git branch
Sie sollten eine ähnliche Ausgabe sehen wie:
bugfix-branch
feature-branch
* master
new-feature
Der neue Branch wurde erstellt, aber wir befinden uns immer noch auf dem master-Branch, wie durch das Sternchen angezeigt wird.
Wechseln zu einem anderen Branch
Um zu unserem neuen Branch zu wechseln, verwenden wir den Befehl git checkout:
git checkout new-feature
Sie sollten eine ähnliche Ausgabe sehen wie:
Switched to branch 'new-feature'
Um zu überprüfen, ob wir die Branches gewechselt haben, führen wir Folgendes aus:
git branch
Jetzt sollte die Ausgabe Folgendes anzeigen:
bugfix-branch
feature-branch
master
* new-feature
Das Sternchen ist zu new-feature gewandert, was anzeigt, dass dies jetzt unser aktueller Branch ist.
Änderungen am Branch vornehmen
Lassen Sie uns eine einfache Änderung vornehmen, um zu demonstrieren, wie Branches funktionieren:
echo "This is a new feature" > feature.txt
git add feature.txt
git commit -m "Add feature description"
Die Ausgabe des Commit-Befehls sollte ähnlich aussehen wie:
[new-feature xxxxxxx] Add feature description
1 file changed, 1 insertion(+)
create mode 100644 feature.txt
Verstehen des HEAD-Zeigers
Git verwendet einen speziellen Zeiger namens HEAD, um zu verfolgen, an welchem Branch oder Commit Sie gerade arbeiten. Wir können sehen, auf welchen Branch HEAD zeigt, mit:
git symbolic-ref HEAD
Dies sollte Folgendes ausgeben:
refs/heads/new-feature
Dies zeigt an, dass HEAD derzeit auf den new-feature-Branch zeigt.
Nachdem wir nun verstanden haben, wie man Branches erstellt und zwischen ihnen wechselt, werden wir im nächsten Schritt untersuchen, was passiert, wenn wir versuchen, einen Branch zu löschen, der gerade ausgecheckt ist.
Verstehen des Fehlers "Cannot Delete Branch Checked Out"
In diesem Schritt werden wir absichtlich den Fehler "Cannot delete branch checked out" auslösen, um zu verstehen, warum er auftritt und wie Git Sie davor schützt, den Branch zu löschen, den Sie gerade verwenden.
Versuch, den aktuellen Branch zu löschen
Versuchen wir, den Branch zu löschen, auf dem wir uns gerade befinden (new-feature):
git branch -d new-feature
Sie sollten eine Fehlermeldung ähnlich der folgenden sehen:
error: Cannot delete branch 'new-feature' checked out at '/home/labex/project/git-branch-demo'
Dieser Fehler tritt auf, weil Git Sie daran hindert, den Branch zu löschen, auf dem Sie sich gerade befinden. Der Grund ist einfach: Wenn Sie den Branch löschen, an dem Sie arbeiten, wüsste Git nicht, welchem Branch es Ihr Arbeitsverzeichnis zuordnen soll, was zu Verwirrung und potenziell zum Verlust von Arbeit führen könnte.
Warum dieser Fehler auftritt
Wenn Sie einen Branch in Git auschecken, passieren mehrere Dinge:
- Git aktualisiert das Arbeitsverzeichnis, um dem Zustand dieses Branchs zu entsprechen
- Der
HEAD-Zeiger wird aktualisiert, um auf diesen Branch zu zeigen - Ihr Arbeitsverzeichnis wird diesem Branch zugeordnet
Wenn Sie den Branch löschen würden, auf dem Sie sich gerade befinden:
- Der
HEAD-Zeiger würde auf einen nicht existierenden Branch zeigen - Änderungen, die Sie vornehmen, würden keinem Branch zugeordnet
- Sie könnten den Überblick über Ihre Arbeit verlieren
Aus diesen Gründen verhindert Git, dass Sie den Branch löschen, auf dem Sie sich gerade befinden.
Anzeigen des aktuellen Branch-Status
Um uns daran zu erinnern, auf welchem Branch wir uns befinden und welche Änderungen wir vorgenommen haben, verwenden wir:
git status
Die Ausgabe sollte ähnlich aussehen wie:
On branch new-feature
nothing to commit, working tree clean
Dies bestätigt, dass wir uns auf dem new-feature-Branch befinden. Um diesen Branch zu löschen, müssen wir zuerst zu einem anderen Branch wechseln, was wir im nächsten Schritt tun werden.
Beheben des Fehlers "Cannot Delete Branch Checked Out"
Nachdem wir nun verstanden haben, warum wir einen ausgecheckten Branch nicht löschen können, lernen wir, wie man einen Branch richtig löscht, indem man zuerst zu einem anderen Branch wechselt.
Zu einem anderen Branch wechseln
Bevor wir den new-feature-Branch löschen können, müssen wir zu einem anderen Branch wechseln. Wechseln wir zurück zum master-Branch:
git checkout master
Sie sollten eine ähnliche Ausgabe sehen wie:
Switched to branch 'master'
Lassen Sie uns überprüfen, ob wir uns jetzt auf dem master-Branch befinden:
git branch
Die Ausgabe sollte Folgendes anzeigen:
bugfix-branch
feature-branch
* master
new-feature
Das Sternchen steht jetzt neben master, was anzeigt, dass dies unser aktueller Branch ist.
Den Branch sicher löschen
Da wir uns jetzt auf einem anderen Branch befinden, können wir den new-feature-Branch sicher löschen:
git branch -d new-feature
Wenn der Branch Änderungen enthielt, die nicht gemergt wurden, könnte Git die Löschung mit einer Meldung wie dieser verhindern:
error: The branch 'new-feature' is not fully merged.
If you are sure you want to delete it, run 'git branch -D new-feature'.
Dies ist eine weitere Sicherheitsfunktion von Git. Das Flag -d löscht nur Branches, die vollständig gemergt wurden, während -D die Löschung unabhängig vom Merge-Status erzwingt. Da wir Änderungen am new-feature-Branch vorgenommen haben, die noch nicht in master gemergt wurden, müssen wir das Flag -D verwenden:
git branch -D new-feature
Sie sollten eine Ausgabe sehen, die die Löschung bestätigt:
Deleted branch new-feature (was xxxxxxx).
Überprüfen der Branch-Löschung
Lassen Sie uns überprüfen, ob der Branch gelöscht wurde:
git branch
Die Ausgabe sollte jetzt Folgendes anzeigen:
bugfix-branch
feature-branch
* master
Der new-feature-Branch wird nicht mehr aufgelistet, was bestätigt, dass er erfolgreich gelöscht wurde.
Verstehen der Branch-Löschung
Wenn Sie einen Branch in Git löschen, löschen Sie nur den Zeiger auf eine Reihe von Commits. Die Commits selbst verbleiben im Git-Repository, bis die Garbage Collection ausgeführt wird. Das bedeutet:
- Wenn Sie versehentlich einen Branch löschen, können Sie ihn oft wiederherstellen
- Das Löschen eines Branchs löscht nicht die Arbeit, die auf diesem Branch geleistet wurde
- Die Branch-Löschung dient hauptsächlich der Ordnung und der Organisation Ihres Repositorys
Indem Sie lernen, wie man Branches richtig löscht, können Sie ein sauberes Git-Repository pflegen und den Fehler "Cannot delete branch checked out" vermeiden.
Best Practices für das Branch-Management
In diesem letzten Schritt werden wir einige Best Practices für das Verwalten von Branches in Git untersuchen, einschließlich der Frage, wie Sie Ihr Repository sauber und organisiert halten können.
Konventionen für die Branch-Benennung
Die Einführung einer konsistenten Konvention für die Branch-Benennung hilft jedem in Ihrem Team, den Zweck jedes Branchs zu verstehen. Einige gängige Muster sind:
feature/feature-name- Für neue Funktionenbugfix/issue-description- Für Fehlerbehebungenhotfix/issue-description- Für kritische Korrekturen in der Produktionrelease/version-number- Für die Release-Vorbereitung
Lassen Sie uns einen korrekt benannten Feature-Branch erstellen:
git checkout -b feature/user-authentication
Der Befehl checkout -b erstellt einen neuen Branch und wechselt in einem Schritt zu diesem. Sie sollten Folgendes sehen:
Switched to a new branch 'feature/user-authentication'
Ihr Repository sauber halten
Das regelmäßige Aufräumen von gemergten und veralteten Branches hilft, Ihr Repository zu organisieren. So identifizieren Sie Branches, die gelöscht werden können:
Um Branches aufzulisten, die in den aktuellen Branch gemergt wurden:
git branch --merged
Dies zeigt Branches an, die sicher mit dem Flag -d gelöscht werden können.
Um Branches aufzulisten, die nicht gemergt wurden:
git branch --no-merged
Diese Branches erfordern das Flag -D zum Löschen, da sie möglicherweise Arbeit enthalten, die verloren gehen würde.
Git Branch-Befehle effektiv verwenden
Git bietet viele Optionen mit dem Befehl branch für ein effektives Branch-Management:
## List all branches, including remote branches
git branch -a
## Show more details about each branch
git branch -v
## Delete a remote branch
git push origin --delete branch-name
## Rename the current branch
git branch -m new-name
Erstellen eines schnellen Workflow-Beispiels
Lassen Sie uns einen typischen Branch-Workflow simulieren:
- Erstellen Sie eine kleine Änderung an unserem Feature-Branch:
echo "User authentication feature" > auth.txt
git add auth.txt
git commit -m "Start user authentication feature"
- Wechseln Sie zurück zum Master-Branch:
git checkout master
- Mergen Sie den Feature-Branch:
git merge feature/user-authentication
Sie sollten eine Ausgabe sehen, die das Mergen bestätigt:
Updating xxxxxxx..xxxxxxx
Fast-forward
auth.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 auth.txt
- Da der Feature-Branch jetzt gemergt ist, können wir ihn sicher löschen:
git branch -d feature/user-authentication
Ausgabe:
Deleted branch feature/user-authentication (was xxxxxxx).
Finaler Branch-Status
Lassen Sie uns unseren finalen Branch-Status überprüfen:
git branch
Die Ausgabe sollte Folgendes anzeigen:
bugfix-branch
feature-branch
* master
Durch Befolgen dieser Best Practices können Sie Branches in Ihrem Git-Repository effektiv verwalten, den Fehler "Cannot delete branch checked out" vermeiden und eine saubere und organisierte Codebasis pflegen.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie Git-Branches effektiv verwalten und den häufigen Fehler "Cannot delete branch checked out" beheben können. Folgendes haben Sie erreicht:
- Einrichten und Erkunden einer Git-Repository-Struktur mit mehreren Branches
- Erstellen neuer Branches und Erlernen des Wechselns zwischen ihnen
- Verstehen, warum Git Sie daran hindert, den Branch zu löschen, auf dem Sie sich gerade befinden
- Erlernen des richtigen Verfahrens zum Löschen eines Branchs, indem Sie zuerst zu einem anderen Branch wechseln
- Erkunden von Best Practices für das Branch-Management, einschließlich Namenskonventionen und der Sauberhaltung Ihres Repositorys
Diese Fähigkeiten sind unerlässlich, um einen organisierten Git-Workflow aufrechtzuerhalten, insbesondere bei der Arbeit an komplexen Projekten mit mehreren Branches. Indem Sie verstehen, wie Git Branches verfolgt und die richtigen Verfahren für das Branch-Management befolgen, können Sie häufige Fehler vermeiden und ein sauberes, effizientes Repository pflegen.
Die Fähigkeit, Branches richtig zu erstellen, zu verwalten und zu löschen, ist eine grundlegende Fähigkeit für jeden Entwickler, der Git verwendet, und das Wissen, das Sie in diesem Lab erworben haben, wird Ihnen helfen, in Ihren zukünftigen Projekten effektiver mit Git-Repositories zu arbeiten.



