1366 Stimmen

Wie kann man lokale Tracking-Branches beschneiden, die nicht mehr auf dem Remote existieren?

Mit git remote prune origin kann ich die lokalen Branches entfernen, die nicht mehr auf dem Remote vorhanden sind.

Aber ich möchte auch lokale Branches entfernen, die von diesen Remote-Branches erstellt wurden (eine Überprüfung, ob sie nicht zusammengeführt wurden, wäre nett).

Wie kann ich das machen?

12 Stimmen

8 Stimmen

Einzeiler, plattformübergreifend, sieht nicht aus, als hätte die Katze auf Ihrer Tastatur geschlafen: npx git-removed-branches (Trockenlauf) oder npx git-removed-branches --prune (für echt). Du musst bereits Node.js installiert haben. Siehe Antworten unten für Details.

0 Stimmen

Ich denke normalerweise, dass diese Dinge absichtlich und nicht automatisch gemacht werden sollten, da Sie sich ansonsten selbst dem Risiko aussetzen, etwas zu löschen, das Sie nicht löschen wollten. Also würde ich bei git branch -d localBranchName und git push origin --delete remoteBranchName bleiben.

-1voto

Ingo Karkat Punkte 159961

Ich habe die akzeptierte Antwort in ein robustes Skript umgewandelt. Du findest es in meinem git-extensions Repository.

$ git-rprune --help
Entfernen Sie alte lokale Branches, die nicht mehr in REMOTE existieren.
Mit --test werden nur die lokalen Branches angezeigt, die gelöscht würden.
Hinweis: Um dies automatisch bei jedem Fetch / Pull auszuführen:
    git config --global fetch.prune true
Verwendung: git-rprune REMOTE [-t|--test|-f|--force] [-?|-h|--help]

0 Stimmen

Der Link funktioniert nicht mehr. Außerdem, wird das nicht mit dem Standard git prune kollidieren?

1 Stimmen

@Macadameane Entschuldigung für den defekten Link; ich hatte das Skript in das Unterverzeichnis bin/ verschoben. Ich habe es auch in git-rprune umbenannt, um diesen Namenskonflikt zu vermeiden; tatsächlich rufe ich diesen Befehl nie direkt auf, sondern verwende ein Alias oprune=rprune origin. Ich habe bisher den integrierten Befehl git prune noch nie gesehen, da es ein ungewöhnlicher Low-Level-Befehl ist.

-2voto

Jason Waldrip Punkte 4889

Löschen Sie alle Zweige, die nicht auf dem aktuellen Stand von master sind

git co master && git branch | sed s/\*/\ / | xargs git branch -d 2> /dev/null

-3voto

Jason Antman Punkte 2250

Ich bin ziemlich sicher, dass git remote prune origin das ist, was du brauchst.

Du kannst es als git remote prune origin --dry-run ausführen, um zu sehen, was es machen würde, ohne Änderungen vorzunehmen.

12 Stimmen

Das entfernt tatsächlich nicht den lokalen Branch selbst.

-10voto

Pedro Ballesteros Punkte 986

Benutzen Sie die GUI? Manueller Vorgang, aber schnell und einfach.

$ git gui

Wählen Sie "Branch -> Löschen" aus. Sie können mehrere Zweige mit Strg-Klick (Windows) auswählen und alle entfernen.

4 Stimmen

Es ist lustig, wie negativ diese Antwort wahrgenommen wird. Meiner Meinung nach ist dieser Ansatz völlig gültig, wenn Sie GUI mögen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X