Ich möchte die Zweige löschen origin_alpha, origin_beta und origin_gamma.
Mögliches Duplikat von Können Sie mit Git mehrere Branches in einem Befehl löschen?
– cmbuckley
10. November 2015 um 13:42 Uhr
Mir ist keine Einschränkung bekannt, die Sie daran hindert, diese Zweige wie jeden anderen Zweig zu löschen: git branch -d origin_alpha
– kvdv
10. November 2015 um 13:42 Uhr
@kvdv Danke für deine Antwort. Angenommen, ich habe 50 Zweige, die mit dem Buchstaben „o“ beginnen, dann ist es nicht bequem, alle diese Zweige manuell zu löschen. Daher die Frage.
– Nirmalya Ghosh
10. November 2015 um 13:46 Uhr
@cmbuckley Danke für deine Antwort. Ich wollte nur die Zweige löschen, die mit einem bestimmten Buchstaben beginnen. Meine Frage unterscheidet sich also von der von Ihnen genannten.
– Nirmalya Ghosh
10. November 2015 um 13:47 Uhr
@NirmalyaGhosh nein, es ist dasselbe, aber das Match ist o* Anstatt von 3.2*. Siehe Antwort stackoverflow.com/a/28614187/283078.
– cmbuckley
10. November 2015 um 13:49 Uhr
hek2mgl
Update: Die -r Option zu xargs ist ein GNU-Addon. Es sei denn, Sie verwenden xargs von GNU findutils funktioniert es möglicherweise nicht. Sie können es weglassen, aber das führt zu einem Fehler, wenn die an xargs geleitete Eingabe leer ist.
Sie können verwenden git branch --list <pattern> und leiten Sie die Ausgabe an xargs git branch -d:
git branch --list 'o*' | xargs -r git branch -d
Übrigens gibt es ein kleines Problem mit dem obigen Code. Wenn Sie gerade eine der Filialen ausgecheckt haben, die mit beginnt o die Ausgabe von git branch --list 'o*' würde so aussehen:
* origin_master
origin_test
o_what_a_branch
Beachten Sie das Sternchen * vor dem aktuellen Filialnamen.
Den aktuellen Zweig kann man zwar ohnehin nicht löschen, aber das führt dazu, dass xargs auch durchgeht * zu git branch delete.
Wie ich schon sagte, es ist nur ein kosmetischer Fehler, aber wenn Sie es vermeiden wollen, verwenden Sie:
Dies funktioniert nicht, wenn Sie sich in einem dieser Zweige befinden, da Ihre Ausgabe das hervorhebende Sternchen enthält. Siehe Antwort stackoverflow.com/a/3670560/283078.
– cmbuckley
10. November 2015 um 13:51 Uhr
Auf Master umgestellt und diesen Code angewendet. Mein Problem gelöst. Vielen Dank.
– Nirmalya Ghosh
10. November 2015 um 13:51 Uhr
@cmbuckley git branch -d <branch> würde auch nicht funktionieren, wenn Sie in diesem Zweig sind. 😉 Deshalb habe ich das ignoriert.
– hek2mgl
10. November 2015 um 13:53 Uhr
Gerade auf einem Mac ausprobiert: xargs akzeptiert nicht -r (illegal option -- r), aber es funktionierte ohne es für den gewünschten Zweck.
– Amy Pellegrini
22. August 2018 um 10:55 Uhr
FYI Die einfachen Anführungszeichen töten es gerade für mich unter Windows git branch --list 'hotfix' zeigt aber nichts git branch --list "hotfix" macht den Trick
PS In Ihrem speziellen Fall könnte yourSearchPattern der Ursprung sein:
git branch -d $(git branch | grep origin)
PPS als nächster Schritt, wäre auch schön, um den Löschvorgang ausführlicher zu gestalten, wäre zum Beispiel schön, dass man das Löschen für jeden Zweig bestätigen muss. Aber ich denke damit ist die Frage erledigt…
Ich bin gerade unter Windows und obwohl ich den vollständigen Unix-Befehlssatz habe, wie grep, ist Ihr Vorschlag hier zB git branch -d $(git branch | grep hotfix) scheitert mit error: branch '$(git' not found
– PandaWood
23. Juli 2018 um 0:27 Uhr
Auf den ersten Blick: ist $() wird von Win richtig erkannt? scheint, dass Git versucht, den Zweig zu entfernen $(git anstatt es durch die Befehlsausgabe zu ersetzen
– lzzluca
24. Juli 2018 um 12:05 Uhr
Es wäre großartig, die Ausarbeitung darüber zu sehen, was die erste Codezeile nach “-d” tut.
Mögliches Duplikat von Können Sie mit Git mehrere Branches in einem Befehl löschen?
– cmbuckley
10. November 2015 um 13:42 Uhr
Mir ist keine Einschränkung bekannt, die Sie daran hindert, diese Zweige wie jeden anderen Zweig zu löschen:
git branch -d origin_alpha
– kvdv
10. November 2015 um 13:42 Uhr
@kvdv Danke für deine Antwort. Angenommen, ich habe 50 Zweige, die mit dem Buchstaben „o“ beginnen, dann ist es nicht bequem, alle diese Zweige manuell zu löschen. Daher die Frage.
– Nirmalya Ghosh
10. November 2015 um 13:46 Uhr
@cmbuckley Danke für deine Antwort. Ich wollte nur die Zweige löschen, die mit einem bestimmten Buchstaben beginnen. Meine Frage unterscheidet sich also von der von Ihnen genannten.
– Nirmalya Ghosh
10. November 2015 um 13:47 Uhr
@NirmalyaGhosh nein, es ist dasselbe, aber das Match ist
o*
Anstatt von3.2*
. Siehe Antwort stackoverflow.com/a/28614187/283078.– cmbuckley
10. November 2015 um 13:49 Uhr