Frage Wie lösche ich einen Git-Zweig sowohl lokal als auch remote?


Ich möchte eine Verzweigung sowohl lokal als auch auf meinem entfernten Projektzweig löschen GitHub.

Fehler beim Versuch, Remote Branch 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 muss ich anders machen, um den remotes/origin/bugfix Zweig sowohl lokal als auch auf GitHub?


13818
2018-01-05 01:12


Ursprung


Antworten:


Zusammenfassung

$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

Beachten Sie, dass in den meisten Fällen der Name der Gegenstelle ist origin.

Lokalen Zweig löschen

Löschen der lokal Zweig verwenden eines der folgenden:

$ git branch -d branch_name
$ git branch -D branch_name

Hinweis: Das -d Option ist ein Alias ​​für --delete, die den Zweig nur löscht, wenn er bereits vollständig in seinem Upstream-Zweig zusammengeführt wurde. Du könntest auch benutzen -D, das ist ein Alias ​​für --delete --force, die die Verzweigung "unabhängig von ihrem Zusammenführungsstatus" löscht. [Quelle: man git-branch]

Entfernte Niederlassung löschen [Aktualisiert am 08. September 2017]

Ab Git v1.7.0, Sie können ein löschen Fernbedienung verzweigen mit

$ git push <remote_name> --delete <branch_name>

das könnte leichter zu merken sein als

$ git push <remote_name> :<branch_name>

welches hinzugefügt wurde Git v1.5.0 "um einen entfernten Zweig oder ein Tag zu löschen."

Beginnend am Git v2.8.0 Sie können auch verwenden git push mit dem -d Option als Alias ​​für --delete.

Daher gibt die Version von Git, die Sie installiert haben, vor, ob Sie die einfachere oder härtere Syntax verwenden müssen.

Entfernten Zweig löschen [Ursprüngliche Antwort vom 5. Januar 2010]

Aus Kapitel 3 von Pro Git von Scott Chacon:

Entfernte Zweige löschen

Angenommen, Sie sind mit einem Remote-Zweig fertig - sagen Sie, Sie und Ihre Mitarbeiter sind mit einer Funktion fertig und haben sie in den Master-Zweig Ihrer Remote-Station (oder in den Zweig, in dem sich Ihre stabile Code-Line befindet) eingefügt. Sie können einen Remote-Zweig mit der eher stumpfen Syntax löschen git push [remotename] :[branch]. Wenn Sie Ihre Serverfix-Verzweigung vom Server löschen möchten, führen Sie Folgendes aus:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

Boom. Keine Verzweigung mehr auf deinem Server. Vielleicht möchten Sie diese Seite verfolgen, weil Sie diesen Befehl benötigen, und Sie werden wahrscheinlich die Syntax vergessen. Eine Möglichkeit, sich an diesen Befehl zu erinnern, ist das Abrufen des git push [remotename] [localbranch]:[remotebranch] Syntax, die wir etwas früher gegangen sind. Wenn du das auslässt [localbranch] Teil, dann sagst du im Grunde: "Nimm nichts auf meine Seite und mach es so [remotebranch]. "

Ich habe ausgestellt git push origin :bugfix und es hat wunderbar funktioniert. Scott Chacon hatte Recht - ich werde es wollen Hund Ohr diese Seite (oder praktisch Hund Ohr, indem Sie dies auf Stack Overflow beantworten).

Dann sollten Sie dies auf anderen Rechnern ausführen

git fetch --all --prune

um Änderungen zu verbreiten.


17189
2018-01-05 01:13



Matthews Antwort ist großartig zum Entfernen Fernbedienung Zweige und ich schätzen auch die Erklärung, aber um eine einfache Unterscheidung zwischen den beiden Befehlen zu machen:

So entfernen Sie a Lokale Niederlassung von Ihrer Maschine:

git branch -d {the_local_branch} (benutzen -D Stattdessen erzwingen Sie das Löschen der Verzweigung, ohne den zusammengeführten Status zu prüfen.

So entfernen Sie a entfernter Zweig vom Server:

git push origin --delete {the_remote_branch}

Referenz: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote


2867
2018-06-12 14:51



Die kurzen Antworten

Wenn Sie die folgenden Befehle genauer erklären möchten, lesen Sie die langen Antworten im nächsten Abschnitt.

Löschen einer Remote-Zweigstelle:

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

Einen 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-Zweiges:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

Die lange Antwort: Es gibt 3 verschiedene Zweige zu löschen!

Beachten Sie beim Löschen von Zweigen sowohl lokal als auch remote Es sind 3 verschiedene Zweige beteiligt:

  1. Die lokale Niederlassung X.
  2. Der entfernte Ursprungszweig X.
  3. Der lokale Remote-Tracking-Zweig origin/X Das verfolgt den Remote-Zweig X.

Visualization of 3 branches

Das ursprüngliche Plakat verwendet

git branch -rd origin/bugfix

der nur seine gelöscht hat lokaler Remote-Tracking-Zweig  origin/bugfixund nicht die eigentliche Remote-Filiale bugfix auf origin.

Diagram 2

Um diese tatsächliche entfernte Verzweigung zu löschen, du brauchst

git push origin --delete bugfix

Diagram 3

Weitere Details

In den folgenden Abschnitten werden zusätzliche Details beschrieben, die beim Löschen von Remote- und Remote-Tracking-Zweigstellen berücksichtigt werden müssen.

Wenn Sie Remote-Zweige löschen, werden auch Remote-Tracking-Zweige gelöscht

Beachten Sie, dass die Remote-Zweigstelle gelöscht wird X von der Befehlszeile mit a git push  löscht auch den lokalen Remote-Tracking-Zweig  origin/XDaher ist es nicht notwendig, den veralteten Remote-Tracking-Zweig mit zu bereinigen git fetch --prune oder git fetch -pobwohl es nicht schaden würde, wenn du es trotzdem tust.

Sie können das Remote-Tracking-Zweig überprüfen origin/X wurde auch gelöscht, indem Folgendes ausgeführt wurde:

# 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

Den veralteten lokalen Remote-Tracking-Zweig Ursprung / X abschneiden

Wenn Sie Ihre Remote-Zweigstelle nicht gelöscht haben X Von der Kommandozeile aus (wie oben) enthält Ihr lokales Repo immer noch einen (inzwischen veralteten) Remote-Tracking-Zweig origin/X. Dies kann passieren, wenn Sie beispielsweise eine Remote-Zweigstelle direkt über die Webschnittstelle von GitHub gelöscht haben.

Eine typische Methode zum Entfernen dieser veralteten Remote-Tracking-Zweige (seit Git Version 1.6.6) besteht darin, sie einfach auszuführen git fetch mit dem --prune oder kürzer -p. Beachten Sie, dass dadurch alle veralteten lokalen Remote-Tracking-Zweige für alle Remote-Zweigstellen entfernt werden, die nicht mehr in der Remote vorhanden sind:

git fetch origin --prune
git fetch origin -p # Shorter

Hier ist das entsprechende Zitat von der 1.6.6 Versionshinweise (Hervorhebung von mir):

"git fetch" gelernt  --all und --multipleOptionen, von denen der Abruf ausgeführt wird   viele Repositories und --prune Option, um Remote-Tracking zu entfernen   Zweige, die abgestanden sind.  Diese machen "git remote update" und "git   Remote-Prune "weniger notwendig (es gibt keinen Plan zu entfernen" remote   update "noch" remote prune ", obwohl).

Alternative zur obigen automatischen Bereinigung für veraltete Remote-Tracking-Zweige

Alternativ dazu, anstatt Ihre veralteten lokalen Remote-Tracking-Zweige zu durchschneiden git fetch -p, Sie können den zusätzlichen Netzwerkbetrieb vermeiden indem Sie die Zweige einfach manuell entfernen --remote oder -r Flaggen:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

Siehe auch


1640
2018-05-30 18:32



Schritte zum Löschen einer Verzweigung:

zum Löschen der entfernter Zweig:

git push origin --delete <your_branch> 

zum Löschen der Lokale NiederlassungDu hast drei Möglichkeiten:

1: git branch -D <branch_name> 

2: git branch --delete --force <branch_name>  //same as -D

3: git branch --delete  <branch_name>         //error on unmerge

Erklären: OK, erkläre einfach, was hier vor sich geht!

Einfach tun git push origin --delete zu Löschen Sie NUR Ihre Remote-Filiale, füge den Namen der Verzweigung am Ende hinzu und dies löscht und verschiebt es gleichzeitig zur Fernbedienung ...

Ebenfalls, git branch -D, die einfach den lokalen Zweig löschen NUR! ...

-D steht für --delete --force Das wird den Zweig löschen, auch wenn es nicht zusammengeführt wurde (erzwinge Löschen), aber du kannst auch verwenden -d welches dafür steht --delete welche einen Fehler bezüglich des Filialzusammenführungsstatus werfen ...

Ich erstelle auch das Bild unten, um die Schritte zu zeigen:

delete a remote and local branch in git


922
2018-06-27 13:13



Sie können auch den entfernten Zweig löschen.

git push --delete origin serverfix

Was das Gleiche macht wie

git push origin :serverfix

aber es könnte leichter sein, sich daran zu erinnern.


703
2017-10-27 22:22



Wenn Sie eine Verzweigung löschen möchten, führen Sie zunächst eine Prüfung in die andere Verzweigung als die zu löschende Verzweigung durch.

git checkout other_than_branch_to_be_deleted

Löschen der lokalen Verzweigung

git branch -D branch_to_be_deleted

Entfernte Filiale löschen:

git push origin --delete branch_to_be_deleted

344
2017-10-07 13:52



Tipp: Beim Löschen von Zweigen mit

git branch -d <branchname>    # deletes local branch

oder

git push origin :<branchname> # deletes remote branch

Nur die Referenzen werden gelöscht. Obwohl die Verzweigung tatsächlich auf der Remote entfernt wird, sind die Verweise auf sie weiterhin in den lokalen Repositorys Ihrer Teammitglieder vorhanden. Dies bedeutet, dass die gelöschten Zweige für andere Teammitglieder immer noch sichtbar sind, wenn sie ein tun git branch -a.

Um dies zu beheben, können Ihre Teammitglieder die gelöschten Zweige mit löschen

git remote prune <repository>

Dies ist typisch git remote prune origin.


329
2017-11-07 13:02



git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

247
2017-10-24 17:36



Das ist einfach: Führen Sie einfach den folgenden Befehl aus:

Um eine Git-Verzweigung sowohl lokal als auch remote zu löschen, löschen Sie zunächst die lokale Verzweigung mit dem Befehl:

git branch -d example

(Hier example ist der Name der Niederlassung

Danach lösche Remote Branch mit dem Befehl:

git push origin :example

212
2018-02-15 15:20



Ein anderer Ansatz ist

git push --prune origin

WARNUNG:  Dadurch werden alle Remote-Zweige gelöscht, die lokal nicht vorhanden sind. Oder umfassender,

git push --mirror

Dadurch wird das Remote-Repository praktisch wie die lokale Kopie des Repositorys aussehen (lokale Köpfe, Fernbedienungen und Tags werden auf der Remote-Seite gespiegelt).


178
2017-11-18 06:11



Ich benutze folgendes in meinem Bash die Einstellungen:

alias git-shoot="git push origin --delete"

Dann können Sie anrufen:

git-shoot branchname

148
2018-04-02 22:11