Frage

Ich möchte einen Zweig sowohl lokal als auch remote löschen.

Fehlgeschlagene Versuche, den 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 sollte ich anders machen, um das erfolgreich zu löschen?remotes/origin/bugfix sowohl lokal als auch remote verzweigen?

War es hilfreich?

Lösung

Zusammenfassung

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

Beachten Sie, dass der Remote-Name in den meisten Fällen lautet origin.

Lokale Zweigstelle löschen

Um die zu löschen lokal branch verwenden Sie eine der folgenden Optionen:

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

Notiz: Der -d Option ist ein Alias ​​für --delete, wodurch der Zweig nur gelöscht wird, wenn er bereits vollständig in seinem Upstream-Zweig zusammengeführt wurde.Sie könnten auch verwenden -D, was ein Alias ​​für ist --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 a löschen Fernbedienung Zweig mit

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

was vielleicht leichter zu merken ist als

$ git push <remote_name> :<branch_name>

was hinzugefügt wurde Git v1.5.0 „um einen Remote-Zweig oder ein Tag zu löschen.“

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

Daher bestimmt die von Ihnen installierte Git-Version, ob Sie die einfachere oder schwierigere Syntax verwenden müssen.

Remote Branch löschen [Ursprüngliche Antwort vom 5. Januar 2010]

Aus Kapitel 3 von Pro Git von Scott Chacon:

Remote-Zweige löschen

Angenommen, Sie sind mit einem Remote-Zweig fertig – sagen wir, Sie und Ihre Mitarbeiter sind mit einer Funktion fertig und haben sie in den Master-Zweig Ihres Remote-Zweigs (oder in den Zweig, in dem sich Ihre stabile Codezeile befindet) eingefügt.Sie können einen Remote-Zweig mithilfe der eher unübersichtlichen Syntax löschen git push [remotename] :[branch].Wenn Sie Ihren Server-Fix-Zweig 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.Kein Zweig mehr auf Ihrem Server.Möglicherweise möchten Sie diese Seite ignorieren, da Sie diesen Befehl benötigen und wahrscheinlich die Syntax vergessen.Eine Möglichkeit, sich diesen Befehl zu merken, besteht darin, sich daran zu erinnern git push [remotename] [localbranch]:[remotebranch] Syntax, die wir etwas früher besprochen haben.Wenn Sie das weglassen [localbranch] Teil, dann sagst du im Grunde: „Nimm nichts auf meiner Seite und lass es geschehen.“ [remotebranch].”

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

Dann sollten Sie dies auf anderen Maschinen ausführen

git fetch --all --prune

um Änderungen zu propagieren.

Andere Tipps

Matthew Antwort ist für das Entfernen Remote Niederlassungen und ich schätze auch die Erklärung, aber eine einfache Unterscheidung zwischen den beiden Befehlen zu machen:

So entfernen Sie eine lokale Niederlassung von Ihrem Computer:

git branch -d {the_local_branch} (Verwendung -D anstatt zu zwingen, den Zweig zu löschen, ohne fusionierte Statusprüfung)

So entfernen Sie ein Remote-Zweig vom Server:

git push origin --delete {the_remote_branch}

Referenz: https://makandracards.com/ Makandra / 621-git-löschen-a-Zweig-local-oder-Fern

Die Kurz Antworten

Wenn Sie nähere Erläuterungen der folgenden Befehle wollen, dann sieht die langen Antworten im nächsten Abschnitt.

Löschen einen Remote-Zweig:

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

Löschen eine lokale Niederlassung:

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-Zweig:

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 löschen

!

Wenn Sie es zu tun mit Niederlassungen Löschen sowohl lokal als auch remote, bedenken Sie, dass gibt es 3 verschiedene Zweige beteiligt :

  1. Die lokale Niederlassung X.
  2. Die Fern Ursprung Zweig X.
  3. Die lokale Remote-Tracking-Zweig origin/X, die die Remote-Zweig X aufspürt.

Visualisierung von 3 Zweigen

Das ursprüngliche Plakat verwendet

git branch -rd origin/bugfix

, die nur gelöscht sein lokale Fernverfolgung Zweig origin/bugfix, und nicht die tatsächliche Fern Zweig bugfix auf origin.

Abbildung 2

So löschen Sie, dass die tatsächlichen Fern Zweig , müssen Sie

git push origin --delete bugfix

Abbildung 3

Weitere Details

Die folgenden Abschnitte beschreiben zusätzliche Details zu beachten, wenn die Fernbedienung und Fern Tracking-Zweig zu löschen.

Pushing Fern Zweige löschen löscht auch Remote-Tracking-Zweig

Beachten Sie, dass die Remote-Zweig X von der Befehlszeile Löschen eines git push mit wird auch die lokale Fernverfolgung Zweig löschen origin/X, so ist es nicht erforderlich, die veraltete Fernverfolgung Zweig mit git fetch --prune beschneidet oder git fetch -p, obwohl würde es nicht schaden, wenn Sie es trotzdem getan hat.

Sie können überprüfen, ob die Remote-Tracking-Zweig origin/X auch durch Ausführen der gelöscht wurde folgende:

# 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 der veraltete lokale Fernverfolgung Zweig Herkunft / X

Wenn Sie nicht das Remote-Zweig X von der Befehlszeile löschen (wie oben), dann Ihre lokale Repo noch enthalten (eine jetzt veraltet) Fernverfolgung Zweig origin/X. Dies kann passieren, wenn Sie einen Remote-Zweig direkt über GitHub der Web-Oberfläche gelöscht, zum Beispiel.

Ein typischer Weg, um diese veralteten Fernverfolgung Zweige (seit Git Version 1.6.6) zu entfernen ist einfach git fetch mit dem --prune oder kürzer -p laufen. Beachten Sie, dass diese alle veralteten lokalen Fernverfolgung entfernt Zweige für alle Remote-Niederlassungen, die nicht mehr existieren auf der Fernbedienung :

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

Hier ist das relevante Zitat aus dem 1.6.6 Release notes (Hervorhebung von mir):

  

"git holen" gelernt --all und --multipleoptions, laufen zu holen aus   viele Repositories und --prune Option Remote-Tracking zu entfernen   Zweige, die abgestanden ging. Diese machen "git remote update" und „git   Fern Prune „weniger notwendig (es gibt keinen Plan zu entfernen“ remote   aktualisieren“noch "remote Prune", obwohl).

Alternative zu oben den automatischen Bereinigung für veraltete Fernverfolgung Zweige

Alternativ kann anstelle des veralteten lokalen Fernverfolgung Zweige durch git fetch -p Beschneiden, können Sie machen die zusätzlichen Netzwerkbetrieb vermeiden nur durch den Zweig manuell zu entfernen (n) mit den --remote oder -r Fahnen:

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

Siehe auch

Schritte zum Löschen eine Branche aus:

Für den Remote-Zweig zu löschen:

git push origin --delete <your_branch> 

Für die lokale Niederlassung Löschen , haben Sie 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 Sie: OK, nur erklären, was hier los ist

Einfach tun git push origin --delete auf löschen Fernbedienung Zweig ONLY , fügen Sie den Namen der Branche am Ende, und dies wird löschen und drücken Sie auf Remote zur gleichen Zeit. ..

Auch git branch -D, die einfach den lokalen Zweig löschen ONLY ! ...

-D steht für --delete --force, die den Zweig löscht auch ist es nicht verschmolzen (Kraft löschen), aber Sie können auch -d benutzen, die für --delete steht, die einen Fehler jeweils der Branche merge Status werfen ...

Ich schaffe auch die Bild unter , um die Schritte zeigen:

 löschen Sie eine Remote- und lokale Niederlassung in git

Sie können auch die folgenden löschen Sie die Remote-Zweig

verwenden
git push --delete origin serverfix

Welche macht das Gleiche wie

git push origin :serverfix

, aber es kann einfacher sein, sich zu erinnern.

Tipp: Wenn Sie löschen Zweige mit

git branch -d <branchname> # deletes local branch

oder

git push origin :<branchname> # deletes remote branch

werden nur die Verweise gelöscht. Auch wenn die Verzweigung tatsächlich die Verweise auf der Fernbedienung entfernt wird, um es existiert noch in dem lokalen Repositories Ihrer Teammitglieder. Dies bedeutet, dass für die anderen Teammitglieder die gelöschten Zweige sind noch sichtbar, wenn sie eine git branch -a tun.

Um dies Ihre Teammitglieder lösen können mit

die gelöschten Äste beschneiden
git remote prune <repository>

Dies ist typischerweise git remote prune origin.

Wenn Sie einen Zweig löschen, erste Kasse mit dem Zweig anderes als der Zweig gelöscht werden.

git checkout other_than_branch_to_be_deleted

Löschen der lokalen Niederlassung:

git branch -D branch_to_be_deleted

Löschen des Fern Zweig:

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

Das ist ganz einfach: Einfach den folgenden Befehl ausführen:

Um eine Git-Zweigs zu löschen sowohl lokal als auch remote, löschen Sie zuerst den lokalen Zweig Befehl:

git branch -d example

(hier example ist der Zweig Name)

Und danach löscht Remote-Zweig mit dem Befehl:

git push origin :example

Ein weiterer Ansatz ist: -

git push --prune origin

. ACHTUNG: Dadurch werden alle Remote-Zweige löschen, die nicht lokal vorhanden Oder umfassender,

git push --mirror

wird effektiv die Remote-Repository wie die lokale Kopie des Repository aussieht (lokale Köpfe, Fernbedienungen und Tags werden auf Remote-Mirroring).

Ich verwende die folgenden in meinem Bash Einstellungen:

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

Dann können Sie anrufen:

git-shoot branchname

Seit Januar 2013 enthalten GitHub a Löschen Zweig neben jedem Zweig in Ihrem "Branches" Seite.

Relevante Blog-Eintrag: Erstellen und Löschen von Zweigen

Löschen lokal:

eine lokale Niederlassung löschen, können Sie:

git branch -d <branch_name> 

einen Zweig mit Gewalt zu löschen, verwendet -D statt -d.

git branch -D <branch_name>

Löschen der Ferne:

Es gibt zwei Möglichkeiten:

git push origin :branchname  

git push origin --delete branchname 

Ich würde vorschlagen, dass Sie die 2. Art und Weise verwenden, wie es intuitiver ist.

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:

[alias]
    rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"

Alternativ können Sie dies über die Befehlszeile mit zu Ihrer globalen Konfiguration hinzufügen

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'

NOTIZ:Bei Verwendung -d (Kleinbuchstabe d), der Zweig wird nur gelöscht, wenn er zusammengeführt wurde.Um den Löschvorgang zu erzwingen, müssen Sie verwenden -D (Großbuchstabe D).

So löschen Sie Ihre Branche lokal als auch remote

  • Zur Kasse zu Master-Zweig - git checkout master

  • Löschen Sie Ihre Remote-Zweig - git push origin --delete <branch-name>

  • Löschen Sie Ihre lokale Niederlassung - git branch --delete <branch-name>

Sie können auch dieses mit git remote prune origin tun

$ git remote prune origin
Pruning origin
URL: git@example.com/yourrepo.git
 * [pruned] origin/some-branchs

Es Pflaumen und löscht Fernverfolgung Zweig von einem git branch -r Auflistung.

Zusätzlich zu den anderen Antworten, verwende ich oft das git_remote_branch Tool. Es ist eine extra installieren, aber es wird Ihnen eine bequeme Möglichkeit, mit Remote-Niederlassungen zu interagieren. In diesem Fall zu löschen:

grb delete branch

Ich finde, dass ich auch die publish und track Befehle ziemlich oft

Ein Liner Befehl löscht sowohl lokale und Remote-:

D=branch-name; git branch -D $D; git push origin :$D

oder den Aliasnamen hinzufügen unten an deine ~ / .gitconfig ; Nutzung: git kill branch-name

[alias]
    kill = "!f(){ git branch -D \"$1\";  git push origin --delete \"$1\"; };f"

löschen Branchen

  

Lassen Sie uns unsere Arbeit auf dem Zweig „Kontakt-Formular“ annehmen getan und wir haben bereits integriert es in „Master“. Da wir es nicht mehr brauchen, können wir sie löschen (lokal):

$ git branch -d contact-form

Für den Remote-Zweig zu löschen:

git push origin --delete contact-form

Remote-Zweig löschen

git push origin :<branchname>

Filiale Löschen

git branch -D <branchname>

lokale Zweig Schritte löschen:

  1. Kasse zu einem anderen Zweig
  2. löschen lokale Niederlassung

Sie einfach sagen:

git branch -d <branch-name>
git push origin :<branch-name>
git push origin --delete <branch Name>

ist leichter zu merken als

git push origin :branchName

Jetzt können Sie es mit der GitHub Desktop- App tun.

Nach dem Start der App

  1. für das Projekt Klicken Sie auf den Zweig
  2. enthalten
  3. Wechseln Sie in die Filiale Sie möchten
  4. Von der „Filiale“ Wählen Sie im Menü „Unpublish ...“, den Zweig von den GitHub Servern gelöscht haben. Unpublish Zweig
  5. Von der „Filiale“ Wählen Sie im Menü ‚Löschen‚ branch_name ‘...‘, die abzweigen von Ihrem lokalen Rechner gelöscht haben (auch bekannt als die Maschine, die Sie gerade arbeiten) < a href = "https://i.stack.imgur.com/TTuLO.png"> löscht lokalen Zweig

So löschen Sie Lokal - (Normal),

git branch -d my_branch

Wenn Sie Ihre Niederlassung in Rebasieren / Fusionierung Fortschritt und das nicht richtig bedeutet getan wurde, erhalten Sie einen Fehler Rebase/Merge in progress erhalten so in diesem Fall werden Sie nicht in der Lage, Ihre Filiale zu löschen.

Also entweder Ihre Notwendigkeit Rebasieren zu lösen / Fusionierung sonst können Sie tun, Kraft löschen, indem Sie,

git branch -D my_branch

Um im Remote zu löschen:

git push --delete origin my_branch

kann das gleiche tun mit,

git push origin :my_branch   # easy to remember both will do the same.

Grafische Darstellung,

 image description hier

Das wird nicht funktionieren, wenn Sie einen Tag mit dem gleichen Namen wie der Zweig auf der Fernbedienung haben:

$ git push origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to push some refs to 'git@github.com:SomeName/some-repo.git'

In diesem Fall müssen Sie angeben, dass Sie den Zweig löschen möchten, nicht mit dem Tag:

git push origin :refs/heads/branch-or-tag-name

Und den Tag anstelle der Branche zu löschen, die Sie verwenden würden:

git push origin :refs/tags/branch-or-tag-name

Viele der anderen Antworten werden auf Fehler / Warnungen führen. Dieser Ansatz ist relativ narrensicher, obwohl Sie noch git branch -D branch_to_delete müssen wenn es nicht vollständig in some_other_branch verschmolzen, zum Beispiel.

git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete

Remote Beschneidung ist nicht erforderlich, wenn Sie den Remote-Zweig gelöscht. Es ist nur die aktuellsten Fernbedienungen auf einem Repository Sie Tracking erhalten verwendet. Ich habe beobachtet, git fetch wird Fernbedienungen hinzufügen, so dass sie nicht entfernen. Hier ist ein Beispiel dafür, wann git remote prune origin tatsächlich etwas tun:

Benutzer A hat die oben genannten Schritte. Benutzer B würde die folgenden Befehle ausführen, um die meisten zu sehen, auf den neuesten Stand entfernte Niederlassungen

git fetch
git remote prune origin
git branch -r

Vor der Ausführung

git branch --delete <branch>

stellen Sie sicher, Sie bestimmen zuerst, was der genaue Name des Remote-Zweig ist durch Ausführen:

git ls-remote

Dies wird Ihnen sagen, was genau für <branch> Wert einzugeben. (branch Groß- und Kleinschreibung!)

git push origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

Wenn Sie sicher, dass Sie es zu löschen, führen

git branch -D bugfix

Jetzt gelöscht entfernten Niederlassungen zu bereinigen, führen

git remote prune origin

Mashup aller anderen Antworten. Benötigt Ruby 1.9.3+, getestet nur auf OS X.

Rufen Sie diese Datei git-remove, machen es ausführbar, und legen Sie sie in Ihrem Weg. Dann nutzen Sie zum Beispiel git remove temp.

#!/usr/bin/env ruby
require 'io/console'

if __FILE__ == $0
      branch_name = ARGV[0] if (ARGV[0])
      print "Press Y to force delete local and remote branch #{branch_name}..."
    response = STDIN.getch
    if ['Y', 'y', 'yes'].include?(response)
      puts "\nContinuing."
      `git branch -D #{branch_name}`
      `git branch -D -r origin/#{branch_name}`
      `git push origin --delete #{branch_name}` 
    else
      puts "\nQuitting."
    end
end
scroll top