Ich möchte einen Zweig sowohl lokal als auch remote löschen.
Fehlgeschlagene Versuche, einen Remote-Zweig zu löschen
$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.
$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.
$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).
$ git push
Everything up-to-date
$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Already up-to-date.
Was kann ich anders machen, um den remotes/origin/bugfix
Zweig sowohl lokal als auch remote erfolgreich zu löschen ?
git
version-control
git-branch
git-push
git-remote
Matthew Rankin
quelle
quelle
deleted remote-tracking branch
": siehe github.com/git/git/commit/…Antworten:
Zusammenfassung
Beachten Sie, dass in den meisten Fällen der Remote-Name lautet
origin
. In einem solchen Fall müssen Sie den Befehl wie folgt verwenden.Lokalen Zweig löschen
Verwenden Sie eine der folgenden Methoden, um den lokalen Zweig zu löschen :
Hinweis: Die
-d
Option ist ein Alias für--delete
, der den Zweig nur löscht, wenn er bereits vollständig in seinem vorgelagerten Zweig zusammengeführt wurde. Sie können auch-D
einen Alias für verwenden--delete --force
, der den Zweig "unabhängig von seinem zusammengeführten Status" löscht. [Quelle:man git-branch
]Remote-Zweig löschen [Aktualisiert am 8. September 2017]
Ab Git v1.7.0 können Sie einen Remote- Zweig mit löschen
das könnte leichter zu merken sein als
Dies wurde in Git v1.5.0 hinzugefügt, "um einen Remote-Zweig oder ein Tag zu löschen."
Ab Git v2.8.0 können Sie
git push
die-d
Option auch als Alias für verwenden--delete
.Daher bestimmt die von Ihnen installierte Git-Version, ob Sie die einfachere oder schwierigere Syntax verwenden müssen.
Remote-Zweig löschen [Ursprüngliche Antwort vom 5. Januar 2010]
Aus Kapitel 3 von Pro Git von Scott Chacon:
Ich habe ausgestellt
git push origin: bugfix
und es hat wunderbar funktioniert. Scott Chacon hatte Recht - ich möchte diese Seite mit einem Ohr versehen (oder praktisch ein Ohr, indem ich dies auf Stack Overflow beantworte).Dann sollten Sie dies auf anderen Maschinen ausführen
Veränderungen zu verbreiten.
quelle
git fetch --all --prune
auf anderen Computern einen Vorgang auszuführen, nachdem Sie den Remote-Zweig auf dem Server gelöscht haben. ||| Nach dem Löschen des lokalen Zweigs mitgit branch -d
und des Löschens des Remote-Zweigs mitgit push origin --delete
anderen Computern sind möglicherweise noch "veraltete Verfolgungszweige" vorhanden (um dies zu sehengit branch -a
). Um diese loszuwerden, tun Siegit fetch --all --prune
.git branch -a
zum Anzeigen aller Zweige können Sie auchgit branch -r
nur entfernte Zweige anzeigen. siehe auchgit remote show origin
- Quelle: gitready.com/intermediate/2009/02/13/list-remote-branches.htmlgit branch -D Branch_Name
, um den örtlichen Zweig loszuwerdenMatthews Antwort ist großartig, um entfernte Zweige zu entfernen, und ich schätze auch die Erklärung, aber um eine einfache Unterscheidung zwischen den beiden Befehlen zu treffen:
So entfernen Sie einen lokalen Zweig von Ihrem Computer:
git branch -d {the_local_branch}
(Verwenden Sie-D
stattdessen, um das Löschen des Zweigs zu erzwingen, ohne den zusammengeführten Status zu überprüfen.)So entfernen Sie einen Remote-Zweig vom Server:
git push origin --delete {the_remote_branch}
Referenz: Git: Lösche einen Zweig (lokal oder remote)
quelle
-D
erzwingen löscht,-d
gibt Ihnen eine Warnung, wenn es nicht bereits zusammengeführt wurde.'git branch -d your_branch
wird, werden Sie Fehler wieerror: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
git remote prune <name>
(z. B.git remote prune origin
), um veraltete Zweige, die nicht mehr auf dem entfernten vorhanden sind, lokal zu entfernen.git branch -a --merged origin/master
Er listet alle lokalen und Remote-Zweige auf. das wurden in master zusammengeführt. Zusätzliche Informationen hierDie 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
Lokalen Zweig löschen
Löschen eines lokalen Remote-Tracking-Zweigs
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 :
X
.X
.origin/X
, der den Remote-Zweig verfolgtX
.Das verwendete Originalplakat:
Welche gelöscht nur seine lokale Fernverfolgung Zweig
origin/bugfix
, und nicht der eigentliche Fern Zweigbugfix
auforigin
.Um diesen eigentlichen Remote-Zweig zu löschen, benötigen Sie
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 agit push
auch der lokale Remote-Tracking-Zweig entferntorigin/X
wird. Daher ist es nicht erforderlich, den veralteten Remote-Tracking-Zweig mitgit fetch --prune
oder zu bereinigengit 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: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-Zweigorigin/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 :Hier ist das relevante Zitat aus den Versionshinweisen zu 1.6.6 (Schwerpunkt Mine):
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:Siehe auch
quelle
X
undorigin/X
Lesezeichen im lokalen Klon (2 Filialen), und dann gibt esX
auf der Fernbedienung (Herstellung 3 Filialen).Schritte zum Löschen eines Zweigs:
So löschen Sie den Remote-Zweig:
Zum Löschen des lokalen Zweigs haben Sie drei Möglichkeiten :
Erklären Sie: OK, erklären Sie einfach, was hier los ist!
Einfach tun ,
git push origin --delete
um Ihren Remote - Zweig löscht nur den Namen der Branche am Ende hinzufügen , und dies wird löschen und schieben Sie es auf Remote zugleich ...Auch
git branch -D
, die einfach die lokale Niederlassung löschen nur ! ...-D
steht für,--delete --force
wodurch der Zweig gelöscht wird, auch wenn er nicht zusammengeführt wurde (Löschen erzwingen). Sie können jedoch auch verwenden-d
, für--delete
welche Stände ein Fehler bezüglich des Status der Zweigzusammenführung ausgegeben wird ...Ich erstelle auch das Bild unten , um die Schritte zu zeigen:
quelle
git branch -a
zeigt lokale und entfernte Zweige an. Es wird Ihnen helfen, das Diagramm einzuführen.git remote prune origin
Ihre lokalen Kopien gelöschter Zweige werden dadurch nicht entfernt. Der gleiche Effekt wird durch die Verwendung vongit fetch --prune
Sie können den Remote-Zweig auch wie folgt löschen
Welches macht das gleiche wie
aber es kann einfacher sein, sich zu erinnern.
quelle
git branch -d <local_branch>
odergit branch -D <local_branch>
zum erzwungenen LöschenTipp: Wenn Sie Zweige mit löschen
oder
Nur die Referenzen werden gelöscht. Obwohl der Zweig tatsächlich auf der Fernbedienung entfernt wurde, sind die Verweise darauf in den lokalen Repositorys Ihrer Teammitglieder vorhanden. Dies bedeutet, dass für andere Teammitglieder die gelöschten Zweige weiterhin sichtbar sind, wenn sie a
git branch -a
.Um dies zu lösen, können Ihre Teammitglieder die gelöschten Zweige mit beschneiden
Dies ist typisch
git remote prune origin
.quelle
git push
Vorgang den lokalen Zweig und den Remote-Zweig löscht .git remote prune
eine etwas veraltete Methode zum Entfernen veralteter Remote-Tracking-Zweige ist. Die neuere Methode ist die Verwendung vongit fetch --prune
odergit fetch -p
.Wenn Sie einen Zweig löschen möchten, checken Sie zuerst in den anderen Zweig als den zu löschenden Zweig aus.
Löschen des lokalen Zweigs:
Remote-Zweig löschen:
quelle
quelle
-D
Kräfte die Löschung. Es ist immer besser zu verwenden-d
, was Sie daran erinnert, wenn Sie etwas Gefährliches tun müssen.Dies ist einfach: Führen Sie einfach den folgenden Befehl aus:
Um einen Git-Zweig sowohl lokal als auch remote zu löschen, löschen Sie zuerst den lokalen Zweig mit diesem Befehl:
(Hier
example
ist der Filialname.)Löschen Sie anschließend den Remote-Zweig mit diesem Befehl:
quelle
Ein anderer Ansatz ist:
WARNUNG: Dadurch werden alle Remote-Zweige gelöscht, die lokal nicht vorhanden sind. Oder umfassender,
Das Remote-Repository sieht effektiv wie die lokale Kopie des Repositorys aus (lokale Köpfe, Fernbedienungen und Tags werden auf dem Remote-Repository gespiegelt).
quelle
Ich verwende Folgendes in meinen Bash- Einstellungen:
Dann können Sie anrufen:
quelle
git push origin --delete $1
eine Datei in Ihren Pfad ein, die aufgerufen wirdgit-shoot
undgit shoot branchname
auch funktioniert.Lokal löschen:
Um einen lokalen Zweig zu löschen, können Sie Folgendes verwenden:
Verwenden Sie
-D
anstelle von, um einen Zweig zwangsweise zu löschen-d
.Remote löschen:
Es gibt zwei Möglichkeiten:
Ich würde vorschlagen, dass Sie den zweiten Weg verwenden, da er intuitiver ist.
quelle
Seit Januar 2013 hat GitHub Delete branchauf Ihrer Seite "Zweige" neben jedem Zweig eine Schaltfläche eingefügt.
Relevanter Blog-Beitrag: Zweige erstellen und löschen
quelle
Wenn Sie beide Schritte mit einem einzigen Befehl ausführen möchten, können Sie einen Alias dafür erstellen, indem Sie Folgendes zu Ihrem hinzufügen
~/.gitconfig
:Alternativ können Sie dies über die Befehlszeile mit zu Ihrer globalen Konfiguration hinzufügen
HINWEIS : Bei Verwendung von
-d
(Kleinbuchstabe d) wird der Zweig nur gelöscht, wenn er zusammengeführt wurde. Um das Löschen zu erzwingen, müssen Sie-D
(Großbuchstabe D) verwenden.quelle
&&
durch,;
sodass der zweite Befehl auch dann ausgeführt wird, wenn der erste Befehl fehlschlägt (manchmal ist nur lokal oder nur remote vorhanden).So löschen Sie Ihre Filiale lokal und remote
Kasse zum Hauptzweig -
git checkout master
Löschen Sie Ihren Remote-Zweig -
git push origin --delete <branch-name>
Löschen Sie Ihre lokale Niederlassung -
git branch --delete <branch-name>
quelle
Sie können dies auch mit tun
git remote prune origin
Remote-Tracking-Zweige werden aus einer
git branch -r
Liste entfernt und gelöscht .quelle
Zusätzlich zu den anderen Antworten verwende ich häufig das Tool git_remote_branch . Es ist eine zusätzliche Installation, bietet Ihnen jedoch eine bequeme Möglichkeit, mit Remote-Zweigen zu interagieren. In diesem Fall zum Löschen:
Ich finde, dass ich die Befehle
publish
und auchtrack
ziemlich oft benutze .quelle
Ein einzeiliger Befehl zum Löschen sowohl lokaler als auch entfernter Dateien :
Oder fügen Sie den folgenden Alias zu Ihrer ~ / .gitconfig hinzu . Verwendungszweck:
git kill branch-name
quelle
git branch -D
in einem Skript vorsichtig vor, da ein Zweig zwangsweise gelöscht wird , ohne zu überprüfen, ob er zusammengeführt wurde. Verwenden Sie-d
, um sicher zu sein.Zweige löschen
Und zum Löschen des Remote-Zweigs:
quelle
Remote-Zweig löschen
git push origin :<branchname>
Lokalen Zweig löschen
git branch -D <branchname>
Lokale Verzweigungsschritte löschen:
quelle
git push origin :<branchname>
schiebt bereits einen 'leeren' Zweig zur Fernbedienung (löscht daher die entfernte Verzweigung)Sagen Sie einfach:
quelle
ist leichter zu merken als
quelle
Jetzt können Sie dies mit der GitHub Desktop- Anwendung tun .
Nach dem Start der Anwendung
Wechseln Sie zu dem Zweig, den Sie löschen möchten
Wählen Sie im Menü "Zweig" die Option "Veröffentlichung aufheben ...", um den Zweig von den GitHub-Servern zu löschen.
Wählen Sie im Menü "Zweig" die Option "Zweigstellenname löschen" ... ", damit der Zweig von Ihrem lokalen Computer gelöscht wird (AKA der Computer, an dem Sie gerade arbeiten).
quelle
Es ist sehr einfach:
So löschen Sie den Remote-Zweig
Oder
Lokalen Zweig löschen
quelle
--delete
anstatt-d
Remote-Zweig zu löschen.-d
Option ist ein Alias für--delete
und wenn--delete
Arbeit dann-d
auch funktionieren sollte, wenn Sie einen Zweig zwangsweise löschen möchten, können Sie-D
anstelle von-d
oder verwenden--delete
.Lokal löschen - (normal)
Wenn sich Ihre Niederlassung in einem Umbasierungs- / Zusammenführungsvorgang befindet und dies nicht ordnungsgemäß durchgeführt wurde, bedeutet dies, dass Sie eine Fehlermeldung erhalten.
Rebase/Merge in progress
In diesem Fall können Sie Ihren Zweig also nicht löschen.Entweder müssen Sie das Umbasieren / Zusammenführen lösen. Andernfalls können Sie das Löschen erzwingen, indem Sie Folgendes verwenden:
So löschen Sie in der Ferne :
Sie können dasselbe tun mit:
Grafische Darstellung:
quelle
Dies funktioniert nicht, wenn Sie ein Tag mit demselben Namen wie der Zweig auf der Fernbedienung haben:
In diesem Fall müssen Sie angeben, dass Sie den Zweig und nicht das Tag löschen möchten:
Um das Tag anstelle des Zweigs zu löschen, würden Sie ebenfalls Folgendes verwenden:
quelle
Viele der anderen Antworten führen zu Fehlern / Warnungen. Dieser Ansatz ist relativ narrensicher, obwohl Sie ihn möglicherweise noch benötigen,
git branch -D branch_to_delete
wenn er beispielsweise nicht vollständig zusammengeführtsome_other_branch
ist.Remote-Bereinigung ist nicht erforderlich, wenn Sie den Remote-Zweig gelöscht haben. Es wird nur verwendet, um die aktuellsten Fernbedienungen in einem Repository abzurufen, das Sie verfolgen. Ich habe beobachtet
git fetch
, dass Fernbedienungen hinzugefügt und nicht entfernt werden. Hier ist ein Beispiel dafür, wanngit remote prune origin
tatsächlich etwas getan wird:Benutzer A führt die obigen Schritte aus. Benutzer B würde die folgenden Befehle ausführen, um die aktuellsten Remote-Zweige anzuzeigen:
quelle
Ich hatte es satt, nach dieser Antwort zu googeln, also verfolgte ich einen ähnlichen Ansatz wie die Antwort, die crizCraig zuvor gepostet hatte.
Ich habe meinem Bash-Profil Folgendes hinzugefügt:
Jedes Mal, wenn ich mit einem Zweig fertig bin (
master
z. B. zusammengeführt), führe ich in meinem Terminal Folgendes aus:... die dann löscht
my-branch-name
ausorigin
so lokal wie auch.quelle
--delete "$@"
und behandeln Sie es-D "$@"
stattdessen$1
für mehrere Zweige.git branch -d
(mit Kleinbuchstaben 'd')&&
auszuführen, um sicherzustellen, dass die Änderungen zusammengeführt wurden, und dann bei Erfolg zu pushen ( zwischen die Befehle zu setzen)Vor der Ausführung
Stellen Sie zunächst sicher, dass Sie den genauen Namen des Remote-Zweigs ermitteln, indem Sie Folgendes ausführen:
Hier erfahren Sie, was Sie genau für den
<branch>
Wert eingeben müssen . (unterscheidet zwischenbranch
Groß- und Kleinschreibung!)quelle
Verwenden:
Wenn Sie sicher sind, dass Sie es löschen möchten, führen Sie es aus
Um jetzt gelöschte Remote-Zweige zu bereinigen, laufen
quelle