Die kurzen Antworten
Wenn Sie detailliertere Erläuterungen zu den folgenden Befehlen wünschen, lesen Sie die langen Antworten im nächsten Abschnitt.
Remote-Zweig löschen
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 1.7.0 or newer)
git push origin :<branch> # Git versions older than 1.7.0
Lokalen Zweig löschen
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
Löschen eines lokalen Remote-Tracking-Zweigs
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p # Shorter
Die lange Antwort : Es gibt drei verschiedene Zweige zum Löschen!
Beachten Sie beim Löschen von Zweigen sowohl lokal als auch remote, dass drei verschiedene Zweige betroffen sind :
- Die lokale Niederlassung
X
.
- Der Zweig des entfernten Ursprungs
X
.
- Der lokale Remote-Tracking-Zweig
origin/X
, der den Remote-Zweig verfolgt X
.
Das verwendete Originalplakat:
git branch -rd origin/bugfix
Welche gelöscht nur seine lokale Fernverfolgung Zweig origin/bugfix
, und nicht der eigentliche Fern Zweig bugfix
auf origin
.
Um diesen eigentlichen Remote-Zweig zu löschen, benötigen Sie
git push origin --delete bugfix
Zusätzliche Details
In den folgenden Abschnitten werden zusätzliche Details beschrieben, die beim Löschen Ihrer Remote- und Remote-Tracking-Zweige zu berücksichtigen sind.
Durch Drücken zum Löschen von Remote-Zweigen werden auch Remote-Tracking-Zweige entfernt
Beachten Sie, dass durch das Löschen des Remote-Zweigs X
von der Befehlszeile mit a git push
auch der lokale Remote-Tracking-Zweig entfernt origin/X
wird. Daher ist es nicht erforderlich, den veralteten Remote-Tracking-Zweig mit git fetch --prune
oder zu bereinigen git fetch -p
. Es würde jedoch nicht schaden, wenn Sie es trotzdem tun würden.
Sie können überprüfen, ob der Remote-Tracking-Zweig origin/X
auch gelöscht wurde, indem Sie Folgendes ausführen:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
Bereinigen des veralteten lokalen Remote-Tracking-Zweigursprungs / X.
Wenn Sie Ihren Remote-Zweig nicht X
über die Befehlszeile gelöscht haben (wie oben), enthält Ihr lokales Repository weiterhin einen (inzwischen veralteten) Remote-Tracking-Zweig origin/X
. Dies kann beispielsweise passieren, wenn Sie einen Remote-Zweig direkt über die GitHub-Weboberfläche gelöscht haben.
Eine typische Möglichkeit, diese veralteten Remote-Tracking-Zweige (seit Git Version 1.6.6) zu entfernen, besteht darin, sie einfach git fetch
mit --prune
oder kürzer auszuführen -p
. Beachten Sie, dass dadurch alle veralteten lokalen Remote-Tracking-Zweige für alle Remote-Zweige entfernt werden, die auf der Remote nicht mehr vorhanden sind :
git fetch origin --prune
git fetch origin -p # Shorter
Hier ist das relevante Zitat aus den Versionshinweisen zu 1.6.6 (Schwerpunkt Mine):
"git fetch" gelernt --all
und --multiple
Optionen, um Fetch aus vielen Repositorys auszuführen, und --prune
Option, um veraltete Remote-Tracking-Zweige zu entfernen. Diese machen "git remote update" und "git remote prune" weniger notwendig (es ist jedoch nicht geplant, "remote update" oder "remote prune" zu entfernen).
Alternative zum oben genannten automatischen Bereinigen für veraltete Fernverfolgungszweige
Alternativ kann anstelle die veralteten lokalen Fernverfolgung Zweig durch Beschneiden git fetch -p
, können Sie machen den zusätzlichen Netzwerkbetrieb vermeiden , indem nur manuell die Branche (n) mit den zu entfernen --remote
oder -r
Fahnen:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Siehe auch