2013-07-19 7 views
15

Ich möchte einige Remote-Zweige meines Projekt-Repository löschen. Ich habe den nächsten Befehl auszuführen:Entfernte Zweige in Git entfernen

git push origin :name_of_branch 

und wenn ich die Remote-Niederlassungen mit

git branch -r 

der Zweigliste, die ich gelöscht habe nicht angezeigt wird, sondern ein Partner von mir läuft

git fetch 

und später

git branch -r 

und in der Liste ist der Zweig name_of_branch, den ich gelöscht hatte, immer noch in der Liste. Als er jedoch versucht, den Zweig mit

git push origin :name_of_branch 

Er erhält die nächste Nachricht zu löschen:

error: unable to delete 'name_of_branch': remote ref does not exist 
error: failed to push some refs to 'the_name_of_the_repository' 

Wie ich den Zweig komplett aus der Liste löschen könnte?

+0

Duplikat von [Löschen einer Git-Verzweigung sowohl lokal als auch remote?] (Http://stackoverflow.com/q/2003505/456814). –

Antwort

23

Dies geschieht, weil, wenn dieser Partner von Ihnen git fetch läuft, wird die Zweiglöschung nicht „angewendet“, um seine Repository. fetch aktualisiert und fügt nur Zweige hinzu.

Sie können git remote prune origin ausführen, um Remote-Zweige in ihrer Liste zu entfernen, die im Upstream-Repository nicht mehr vorhanden sind.

+4

FYI, 'git remote prune' ist etwas veraltet zugunsten von' git fetch --prune' oder 'git fetch -p'. Siehe [Git Version 1.6.6 Release Notes] (https://github.com/git/git/blob/v2.0.0/Documentation/RelNotes/1.6.6.txt # L162-L166): "[' git fetch --prune' macht] 'git remote update' und' git remote prune' weniger notwendig (es gibt keinen Plan, 'remote update' noch' remote prune' zu ​​entfernen). " –

1
git branch -r -d 'remote-branch' 
9

git fetch --prune <remote> kann verwendet werden, um alle Remote-Tracking-Zweige zu entfernen, die Zweige verfolgen, die nicht mehr in einem Remote-Repository vorhanden sind (d. H. Sie wurden in der Remote gelöscht). Vom official Linux Kernel Git documentation for fetch:

-p

--prune

Nach dem Abrufen, entfernen Sie alle Remote-Tracking-Zweige, die nicht mehr auf der Fernbedienung vorhanden sind.

Sie können auch remote veraltete Fernverfolgung Zweige mit dem Befehl

git branch -D -r <remote>/<branch> 

wie in the documentation for git branch angegeben:

Verwenden -r zusammen mit -d Fernverfolgung Zweige löschen. Beachten Sie, dass es nur sinnvoll ist, Remote-Tracking-Zweige zu löschen, wenn sie nicht mehr im Remote-Repository vorhanden sind oder wenn git fetch so konfiguriert wurde, dass sie nicht erneut abgerufen werden.