Wie lösche ich einen Git branch lokal und Remote?
Möchte ich eine Verzweigung sowohl lokal als auch Remote.
Gescheiterten Versuche, Delete Remote Branch
$ 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 sollte ich anders machen, um erfolgreich zu löschen
remotes/origin/bugfix
Zweig sowohl lokal als auch Remote?
Moderator-Hinweis: Wenn Sie beabsichtigen, diese Frage zu beantworten, tun, beachten Sie, dass es gibt bereits über 40 Antworten geschrieben. Wird Ihre neue Antwort hinzufügen erhebliche Wert?
Hinweis: für Git 2.5+ (Q2 2015), die genaue Meldung "
Hinweis: für Git 2.5+ (Q2 2015), die genaue Meldung "
deleted remote-tracking branch
": siehe github.com/git/git/commit/...InformationsquelleAutor Matthew Rankin | 2010-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zusammenfassung
Beachten Sie, dass in den meisten Fällen die remote-name ist
origin
.Löschen, Örtliche Niederlassung
Löschen lokalen Zweig verwenden Sie eine der folgenden:
Hinweis: Die
-d
option ist ein alias für--delete
, die löscht nur die Filiale, wenn es bereits vollständig verschmolzen zu upstream-branch. Sie können auch-D
, was ein alias für--delete --force
, der löscht den branch "unabhängig von seiner zusammengeführt status." [Quelle:man git-branch
]Delete Remote Branch [Aktualisiert am 8-Sep-2017]
Als der Git v1.7.0, können Sie Sie löschen eine remote Zweig mit
welches vielleicht einfacher zu merken als
wurde Hinzugefügt Git v1.5.0 "löschen einer remote-Zweig oder ein tag."
Ab Git v2.8.0 Sie können auch
git push
mit der-d
option als alias für--delete
.Daher, die version von Git, die Sie installiert haben, wird diktieren, ob Sie brauchen, um zu verwenden, die leichter oder schwerer syntax.
Delete Remote Branch [Original-Antwort aus 5-Jan-2010]
Aus Kapitel 3 Pro Git von Scott Chacon:
Gab ich
git push origin :bugfix
und es hat wunderbar funktioniert. Scott Chacon hatte Recht—ich will zu Hund Ohr, dass die Seite (oder nahezu dog ear durch die Beantwortung dieser auf den Stack Overflow).Dann sollten Sie diese auf anderen Maschinen
zum weitergeben von änderungen.
git push origin local_branch:remote_branch
, dann ist die syntax für eine Verzweigung mitgit push origin :remote_branch
ist irgendwie Niedlich. Es gibt eine Lücke vor der:
Vergessen Sie nicht zu tun ein
git fetch --all --prune
auf anderen Maschinen nach dem löschen der remote-branch auf dem server. ||| Nach dem löschen der lokalen branch mitgit branch -d
und löschen der remote-branch mitgit push origin --delete
anderen Maschinen, kann immer noch die "veraltete-tracking branches" (zu sehen, Sie tungit branch -a
). Um loszuwerden, diese tungit fetch --all --prune
.in Ergänzung zu @TrevorBoydSmith ist
git branch -a
um alle Filialen, können Sie auchgit branch -r
anzeigen remote-Niederlassungen nur. siehe auchgit remote show origin
- Quelle: gitready.com/intermediate/2009/02/13/list-remote-branches.htmlIch hatte, um
git branch -D Branch_Name
um loszuwerden, der lokalen NiederlassungSie müssen nur verwenden Sie-D, wenn der Zweig noch nicht zusammengeführt wurde, in einem anderen Zweig.
InformationsquelleAutor Matthew Rankin
Matthew ' s Antwort ist Super für das entfernen von remote Zweigen, und ich Schätze auch die Erklärung, sondern um eine einfache Unterscheidung zwischen den beiden Befehlen:
Entfernen die lokale Niederlassung Ihrer Maschine:
git branch -d {the_local_branch}
(verwenden Sie-D
statt zu erzwingen, löschen Sie die Verzweigung ohne zu prüfen, zusammengeführt status)Entfernen remote-branch vom server:
git push origin --delete {the_remote_branch}
Referenz: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote
-D
force löscht,-d
gibt Ihnen eine Warnung, wenn es nicht bereits zusammengeführt.Wenn Ihre lokale Niederlassung nicht zusammen mit master-und lief
'git branch -d your_branch
dann 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'.
Ich würde vorschlagen, mit -d statt -D, weil es sicherer ist. Wenn -d nicht aufgrund individueller begeht, dann müssen Sie bewerten, und wenn es ist auf jeden Fall OK zum entfernen, dann verwenden Sie -D.
Andere mit repository-Klone, wo die remote branches entfernt wurden, sollte laufen
git remote prune <name>
(z.B.git remote prune origin
), um lokal zu entfernen, veraltete Zweige, die nicht mehr existieren, in die Fernbedienung ein.Ich möchte hinzufügen, dass -d gibt eine Warnung, wenn Sie nicht zusammengeführt werden mit dem aktuellen KOPF. Wenn Sie brauchen Klarheit empfehle ich diesen Befehl
git branch -a --merged origin/master
Es wird eine Liste alle Branchen, lokal und remote; zusammengeführt wurden Meister. Weitere Informationen hierInformationsquelleAutor Eric Brotto
Sie Die Kurzen Antworten
Wenn Sie möchten detailliertere Erläuterungen der folgenden Befehle ein, dann sehen die langen Antworten, die in den nächsten Abschnitt.
Löschen eines remote-branch:
Löschen einer lokalen Niederlassung:
Löschen eines lokalen remote-tracking-branch:
Die Lange Antwort: es gibt 3 verschiedene Zweige löschen!!!
Wenn Sie den Umgang mit dem löschen von branches lokal und Remote, im Hinterkopf behalten, dass es gibt 3 verschiedene Zweige beteiligt:
X
.X
.origin/X
dass Spuren der remote-ZweigstelleX
.Den original-poster verwendet
denen nur gelöscht sein lokalen remote-tracking-branch
origin/bugfix
, und nicht die eigentlichen remote-branchbugfix
auforigin
.Zu löschen, die eigentlichen remote-branch, müssen Sie
Weitere Details
Die folgenden Abschnitte beschreiben zusätzliche details zu beachten beim löschen von Ihrem remote-und remote-tracking branches.
Drücken zum löschen von remote branches entfernt remote-tracking branches
Beachten Sie, dass das löschen der remote-Zweigstelle
X
von der Befehlszeile unter Verwendung einergit push
wird auch löschen Sie die lokalen remote-tracking-branchorigin/X
, so ist es nicht notwendig zu beschneiden, die veraltete remote-tracking-branch mitgit fetch --prune
odergit fetch -p
, obwohl es würde nicht Schaden, wenn Sie Tat es trotzdem.Können Sie überprüfen, ob die remote-tracking-branch
origin/X
ebenfalls gelöscht wurde, indem Sie Folgendes ausführen:Beschneiden der veralteten lokalen remote-tracking-branch origin/X
Wenn Sie nicht löschen Sie Ihre remote-branch
X
von der Kommandozeile (wie oben), dann ist dein lokales repo noch enthalten (jetzt veraltet) remote-tracking-branchorigin/X
. Dies kann passieren, wenn Sie gelöscht remote-branch direkt über GitHub web-Schnittstelle, zum Beispiel.Eine typische Art und Weise, diese zu entfernen, veraltet remote-tracking branches (da Git version 1.6.6) einfach laufen
git fetch
mit der--prune
oder kürzer-p
. Beachten Sie, dass diese entfernt alle veralteten lokalen remote-tracking-branches, die für alle remote-branches, die nicht mehr existieren auf der Fernbedienung:Hier ist das relevante Zitat aus dem 1.6.6 release notes (Hervorhebung von mir):
Alternative zu den oben genannten automatischen beschneiden für veraltet remote-tracking branches
Alternativ, statt der Beschneidung Ihrer veralteten lokalen remote-tracking-branches, die durch
git fetch -p
, können Sie vermeiden, dass das zusätzliche Netz-Betrieb nur durch manuelles entfernen der Filiale(N) mit der--remote
oder-r
flags:Siehe Auch
das ist ziemlich viel richtig. Branches in Git sind nur die Lesezeichen befestigt verpflichtet. Also in meinen Diagrammen oben, es gibt
X
undorigin/X
Lesezeichen in den lokalen clone (2 Filialen), und dann gibt esX
auf der Fernbedienung (so 3 Filialen).+1 für die remote-tracking-branch. Dieser Zweig ist, was bewirkt, dass Probleme, die beim Klonen von jemand anderem Zweig. Es hält auf die Verfolgung Ihrer verpflichtet und bitten Sie, wenn Sie wollen push-to-person-Zweig.
InformationsquelleAutor
Schritte für das löschen eines Zweiges:
Zum löschen der remote-branch:
Zum löschen der Ortsgruppe, Sie haben drei Möglichkeiten:
Erklären: OK, nur erklären, was hier Los ist!
Einfach
git push origin --delete
zu löschen Sie Ihre remote-Zweig NUR, fügen Sie den Namen der Zweig am Ende, und dies wird zu löschen und drücken Sie, um die Fernbedienung auf den gleichen Zeit...Auch
git branch -D
, die Sie einfach löschen Sie die lokale Niederlassung NUR!...-D
steht für--delete --force
dem löschen der Niederlassung, auch wenn Sie nicht zusammengeführt werden(Kraft löschen), aber Sie können auch-d
steht für--delete
welche einen Fehler auslösen jeweiligen von der Zweig Zusammenführen status...Ich auch das Bild unten zeigen die Schritte:
git branch -a
wird die Anzeige von lokalen und remote-Niederlassungen.Es wird für Sie zu helfen-Diagramm vorstellen.beachten Sie, dass wenn Sie auf den Zweig, den Sie löschen möchten, müssen Sie die Kasse einer Filiale, andere als die, die Sie löschen müssen (z.B.: Meister) vor dem löschen der lokalen Niederlassung.
InformationsquelleAutor Alireza
Können Sie auch die folgenden Optionen verwenden, um zu löschen der remote-Zweigstelle
Die nicht die gleiche Sache wie
aber es ist vielleicht leichter zu merken.
Du hast vergessen den Teil zum löschen der lokalen Zweigstelle kann erfolgen durch:
git branch -d <local_branch>
odergit branch -D <local_branch>
für Kraft-löschenInformationsquelleAutor pagetribe
Wenn Sie möchten, eine Verzweigung, erste Kasse in der Filiale andere als der Zweig gelöscht werden.
Löschen der lokalen Branche:
Löschen der remote-Zweigstelle:
InformationsquelleAutor Praveen Hiremath
Tipp: Wenn Sie löschen Filialen mit
oder
nur die Verweise gelöscht werden. Obwohl die Filiale wirklich entfernt auf der Fernbedienung die Verweise auf Sie gibt es noch in den lokalen repositories Ihrer team-Mitglieder. Dies bedeutet, dass die anderen team-Mitglieder die gelöscht äste sind noch zu sehen, wenn Sie eine
git branch -a
.Um dieses Problem zu lösen Sie Ihre team-Mitglieder können beschneiden die gelöschte Zweige mit
Dies ist in der Regel
git remote prune origin
.git push
operation löscht den lokalen Zweig und der remote-Zweigstelle.Beachten Sie, dass
git remote prune
ist eine etwas veraltete Methode zum entfernen von veralteten remote-tracking-branches, die neueren Weg, es zu tun, ist die Verwendunggit fetch --prune
odergit fetch -p
.in der Tat Sie sehen nicht die gelöschte Zweig nach dem löschen, da die Referenz auf den remote-branch entfernt werden für Sie vor Ort. Jemand anderes in Ihrem team, die ausgecheckt hat, die Branche wird immer noch die Referenz und wird noch sehen, es sei denn, Sie beschneiden die Niederlassung.
InformationsquelleAutor pfrenssen
-D
Kräfte die Löschung. Es ist immer besser, zu verwenden-d
, die Sie daran erinnern wird, wenn Sie müssen etwas tun, gefährlich.ahahah 🙂 es ist bis zu Ihnen: verwenden Sie-d, wenn Sie wollen, um zu sehen, git Weinen oder -D, wenn Sie wollen Weinen.
InformationsquelleAutor Felipe
Ist einfach: führen Sie Einfach den folgenden Befehl:
Löschen Git branch lokal und aus der Ferne, löschen Sie zuerst den lokalen branch mit dem Befehl:
(hier
example
ist der branch-name)Und nach, dass löschen der remote-branch mit dem Befehl:
InformationsquelleAutor Syeful Islam
Einen anderen Ansatz:-
WARNUNG: Dies löscht alle Außenstellen, die nicht lokal vorhanden ist. Oder mehr umfassend,
effektiv stellen Sie das remote-repository schauen, wie die lokale Kopie des repository (lokale Köpfe, Fernbedienungen und tags sind gespiegelt auf der Fernbedienung).
InformationsquelleAutor imanuelcostigan
Benutze ich in meinem Bash Einstellungen:
Dann können Sie anrufen:
Wenn Ihre Herkunft ist ein Atlassian Stash und in der Branche als Standard festgelegt ist, erhalten Sie eine Fehlermeldung "standardmäßig das löschen der current-Zweig verweigert...". Ich hatte zum ändern der default-Zweig im Stash zu Punkt zu einem anderen Zweig, bevor ich löschen konnte.
Das ist ganz einfach, wie du es getan habe, aber fyi git auch können Sie benutzerdefinierte Befehle. Setzen
git push origin --delete $1
in einer Datei auf Ihrem Pfad genanntgit-shoot
undgit shoot branchname
wird auch funktionieren.InformationsquelleAutor crizCraig
Seit Januar 2013 GitHub enthalten ein Löschen Zweig - Taste neben jedem Zweig, in Ihren "Filialen" - Seite.
Relevanten blog post: Erstellen und löschen von Zweigen
Ich wollte diesen Punkt nicht. Beachten Sie, dass die Schaltfläche nicht löschen Sie Ihre lokale Niederlassung... siehe diese Antwort für wie zu tun, dass: stackoverflow.com/a/10999165/901641
InformationsquelleAutor Nacho Coloma
Wenn Sie wollen beide diese Schritte mit einem einzigen Befehl, können Sie einen alias für es, indem Sie die unten, um Ihre
~/.gitconfig
:Alternativ können Sie fügen Sie diese, um Ihre globalen config in der Befehlszeile mit
HINWEIS: Wenn Sie
-d
(Kleinbuchstaben d), der Zweig wird nur gelöscht, wenn es zusammengeführt wurde. Um zu erzwingen, das löschen zu passieren, werden Sie brauchen, um zu verwenden-D
(groß-D).&&
mit;
so, dass selbst wenn der erste Befehl schlägt fehl, der zweite wird noch ausgeführt (manchmal auch nur lokal oder nur remote vorhanden ist).InformationsquelleAutor Ryan Kohn
Löschen lokal:
Löschen einer lokalen Niederlassung, die Sie verwenden können:
Löschen Sie einen Zweig gewaltsam, verwenden Sie
-D
statt-d
.Aus der Ferne löschen:
Gibt es zwei Möglichkeiten:
Ich würde vorschlagen, Sie verwenden den 2ten Weg, da es intuitiver ist.
InformationsquelleAutor Rahul Gupta
Löschen Ihrer Filiale vor Ort und aus der Ferne
Checkout master branch -
git checkout master
Löschen Sie Ihre remote-branch -
git push origin --delete <branch-name>
Löschen Sie Ihren lokalen Zweig -
git branch --delete <branch-name>
InformationsquelleAutor mfathy00
Können Sie auch dies tun, indem Sie
git remote prune origin
Es löscht und löscht remote-tracking branches aus einem
git branch -r
Auflistung.InformationsquelleAutor nickleefly
Zusätzlich zu den anderen Antworten, ich benutze oft die git_remote_branch tool. Es ist eine zusätzliche installieren, aber es wird Ihnen eine komfortable Möglichkeit zur Interaktion mit remote-Niederlassungen. In diesem Fall löschen:
Finde ich, dass ich auch mit der
publish
undtrack
Befehle oftInformationsquelleAutor u2622
One-liner Befehl löschen sowohl lokal, als auch remote:
D=branch-name; git branch -D $D; git push origin :$D
oder fügen Sie den alias unten, um Ihre ~/.gitconfig; Verwendung:
git kill branch-name
git branch -D
sorgfältig in ein Skript, da es Kraft-löscht einen Zweig, ohne es zu prüfen zusammengeführt wurde. Verwenden-d
um sicher zu sein.InformationsquelleAutor Vinnie James
Löschen Von Verzweigungen
Und für das löschen der remote-Zweigstelle:
InformationsquelleAutor Ulysses Alves
Delete remote branch
git push origin :<branchname>
Löschen, örtliche Niederlassung
git branch -D <branchname>
Löschen, örtliche Niederlassung vor:
Nein,
git push origin :<branchname>
schon schiebt einen "leeren" branch auf das remote (also löscht das remote-branch)InformationsquelleAutor jayxhj
Einfach sagen:
InformationsquelleAutor piyushmandovra
Nun können Sie es mit der GitHub Desktop app.
Nach dem Start der app
Ich dissagree. Im Jahr 2010, wenn der OP die Frage gestellt, UI Weg, es zu tun nicht, und die einzige option war Befehlszeile. Um anzuzeigen, dass Sie möchten, dass ein Befehl Linie nur die option sollte angegeben werden, in der Frage oder mit dem tag command-line-interface, die in diesem Fall nicht vorhanden.
Der git-Befehl zum löschen eines remote-branch saugt und ich Neige dazu, es zu vergessen (neue und alte). Zum Glück gibt es GUI-tools, die die Möglichkeit haben. Git-Gui, TortoiseGit und GitHub Desktop haben - ich wünschte, Git Extensions hatte diese Funktion auch. Jedenfalls, was ich mich erinnere ist der start Git Gui aus innerhalb von Git Extensions, wenn ich Sie zum löschen eines remote-branch.
InformationsquelleAutor Eric
ist leichter zu merken als
InformationsquelleAutor Smila
Zu löschen Lokal (Normal),
Wenn Sie Ihre Niederlassung in rebasierung/Zusammenführen Fortschritt und das wurde nicht richtig gemacht bedeutet, Sie erhalten eine Fehlermeldung
Rebase/Merge in progress
so in diesem Fall, werden Sie nicht in der Lage, zu löschen von Ihrem Zweig.Also entweder lösen müssen rebasierung - /merging-sonst können Sie tun, Kraft, Löschen, mithilfe,
Zu löschen, in Remote:
können das gleiche tun mit ,
Grafische Darstellung,
InformationsquelleAutor Mohideen ibn Mohammed
Das wird nicht funktionieren, wenn du einen tag mit dem gleichen Namen wie der Zweig auf der Fernbedienung:
In diesem Fall müssen Sie angeben, dass Sie möchten, löschen Sie die Verzweigung, nicht der tag:
Ähnlich, um zu löschen den tag statt von der Filiale, die Sie verwenden würden:
Naja, mein Szenario war, dass ich die Umwandlung einer Filiale an einem tag und es machte Sinn für den tag zu haben, die den gleichen Namen wie der Zweig. Mit umwandeln meine ich die Zusammenführung Zweig B zu A und markieren des letzten commit in branch B tag B, so dass nach dem löschen von Zweig B kann es immer noch leicht wiederhergestellt werden, einfach durch Check-out-tag-B.
InformationsquelleAutor Amiramix
Ich krank googeln für diese Antwort, also nahm ich einen ähnlichen Ansatz
zu die Antwort, die crizCraig gepostet früher.
Ergänzt die folgenden meine Bash-Profil:
Dann jedes mal, wenn ich fertig bin mit einem branch (verschmolzen
master
zum Beispiel) führe ich das folgende in mein terminal:...das löscht dann
my-branch-name
ausorigin
als als auch lokal.--delete "$@"
und-D "$@"
statt$1
werden handle es für mehrere Filialen.Ich schlage vor, läuft
git branch -d
(mit Kleinbuchstabe 'd') die ersten, um sicherzustellen, änderungen zusammengeführt wurden, und drücken Sie dann erfolgreich, wenn (setzen Sie&&
zwischen Befehlen)InformationsquelleAutor arthurakay
Viele der anderen Antworten führen zu Fehlern/Warnungen. Dieser Ansatz ist relativ narrensicher, obwohl Sie vielleicht noch brauchen
git branch -D branch_to_delete
wenn es nicht vollständig zusammengeführtsome_other_branch
zum Beispiel.Remote-Rückschnitt ist nicht erforderlich, wenn Sie das löschen der remote-branch. Es ist nur verwendet, um die meisten up-to-date-Fernbedienungen zur Verfügung, die auf einem repository, die Sie erfassen. Ich habe beobachtet
git fetch
hinzufügen Fernbedienungen, nicht entfernen. Hier ist ein Beispiel, wenngit remote prune origin
tatsächlich etwas tun wird:Benutzer A führt die oben genannten Schritte. Benutzer B die folgenden Befehle ausführen, um zu sehen, die meisten up-to-date Außenstellen
InformationsquelleAutor Brandon Cook
Vor der Ausführung
stellen Sie sicher bestimmen Sie zuerst, was die GENAUEN Namen der remote-Zweigstelle ist von der Ausführung:
Dies wird Ihnen sagen, was zu geben Sie GENAU für
<branch>
Wert. (branch
ist case sensitive!)InformationsquelleAutor joey
Wenn Sie sicher sind, dass Sie wollen, um es zu löschen, führen Sie
Nun zu bereinigen gelöscht remote-Standorten läuft
InformationsquelleAutor Vivek
Mashup von allen anderen Antworten. Erfordert
Ruby 1.9.3+
getestet nur auf OS X.Rufen Sie diese Datei
git-remove
, machen Sie es ausführbar und legen Sie es in Ihren Pfad. Dann verwenden Sie beispielsweisegit remove temp
.dann müssen Sie erweitern diese Funktionalität, um diese, sondern eine variable eine Annahme.
sorry, aber Ruby für diese Art von Arbeit ? Logischer ist die Umsetzung auf bash, das funktioniert out-of-box.
Ruby ist installiert auf der box genau wie die Bash, zumindest unter OSX. Siehe: stackoverflow.com/questions/2342894/..., wo dieses Thema wurde verworfen, da die Meinung-auf Basis von, ALSO.
dieser link ist aus dem Kontext und haben einen breiteren Anwendungsbereich. Ich sage nur über git und als Thema ist nicht entstanden, nur für OSX, das wählen ist seltsam, für andere Systeme (z.B. UNIX, Windows)
InformationsquelleAutor Dan Rosenstark