1366 Stimmen

Wie kann man lokale Tracking-Zweige beschneiden, die nicht mehr auf dem Remote vorhanden sind?

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

Aber ich möchte auch die lokalen 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 tun?

12 Stimmen

8 Stimmen

Einzeiler, plattformübergreifend, sieht nicht so aus, als hätte die Katze auf deiner 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 in der Regel, dass diese Dinge absichtlich und nicht automatisch erledigt werden sollten, da Sie sich sonst dem Risiko aussetzen, etwas zu löschen, das Sie nicht löschen wollten. Deshalb 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-Erweiterungs-Repository.

$ git-rprune --help
Entferne 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 durchzufü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 dies nicht mit dem Standard git prune kollidieren?

1 Stimmen

@Macadameane Entschuldigung für den falschen Link; ich habe das Skript in das bin/ Unterverzeichnis 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. Bisher habe ich das integrierte git prune noch nie gesehen, da es ein unüblicher Befehl auf niedriger Ebene ist.

-2voto

Jason Waldrip Punkte 4889

Lösche jeden Zweig, der nicht auf dem neuesten Stand mit dem Master ist

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

-3voto

Jason Antman Punkte 2250

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

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

12 Stimmen

Das entfernt tatsächlich nicht den lokalen Branch selbst.

-10voto

Pedro Ballesteros Punkte 986

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

$ git gui

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

4 Stimmen

Es ist lustig, wie negativ diese Antwort wahrgenommen wird. Völlig gültiger Ansatz meiner Meinung nach, 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