Zusamenfassend;
- Wie kann ich mehrere zusammengeführte Remote-Fernbedienungen löschen?
Mehr Hintergrund;
Ich habe ein Git-Repo mit Dutzenden von Fernbedienungen, die zu Master zusammengeführt wurden. Ich kann diese Fernbedienungen einzeln löschen, indem ich Folgendes verwende:
git push --delete origin myBranch-1234
Dies ist jedoch ein langsamer und langwieriger Prozess für alle Fernbedienungen. Also versuche ich diesen Befehl:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
listet alle zusammengeführten Fernbedienungen auf.
grep origin
Weist den Befehl an, den Ursprung einzuschließen.
grep -v master
Weist den Befehl an, den Master auszuschließen.
xargs git push origin --delete
Weist den Befehl an, die Liste der Fernbedienungen zu löschen.
Alles in allem erwarte ich, dass alle zusammengeführten Fernbedienungen gesammelt und gelöscht werden.
Wenn ich den obigen Befehl ausführe, erhalte ich für jede zusammengeführte Fernbedienung Folgendes:
error: unable to delete 'origin/myBranch-1234': remote ref does not exist
error: unable to delete 'origin/myBranch-1235': remote ref does not exist
error: unable to delete 'origin/myBranch-1236': remote ref does not exist
error: unable to delete 'origin/myBranch-1237': remote ref does not exist
... etc
Diese Fernbedienungen existieren jedoch und ich kann jede von ihnen auschecken. Viele Websites und Leute empfehlen, dass ich laufe git fetch --prune
, um fehlende Referenzen zu bereinigen. Dies führt zu nichts, da alle diese Fernbedienungen vorhanden sind.
Also frage ich dich, lieber Stapeltausch;
- Warum kann ich eine Fernbedienung löschen, aber nicht viele?
- Ist mein Befehl korrekt?
Ich glaube, ich vermisse etwas Kleines. Jedes Mal, wenn ich dies recherchiere, scheint es, als würde ich das richtig machen, aber ich erhalte die oben genannten Fehler.
--prune
? Meiner Meinung nach ist das ziemlich irreführend