1366 Stimmen

Wie man lokale Tracking-Branches beschneidet, die nicht mehr auf dem Remote vorhanden sind?

Mit git remote prune origin kann ich die lokalen Zweige entfernen, die nicht mehr auf dem Remote-Server sind.

Aber ich möchte auch die lokalen Zweige entfernen, die von diesen Remote-Zweigen erstellt wurden (eine Überprüfung, ob sie nicht zusammengeführt wurden, wäre schön).

Wie kann ich das machen?

12 Stimmen

8 Stimmen

Einzeiler, plattformübergreifend, sieht nicht aus, als hätte die Katze auf deiner Tastatur geschlafen: npx git-removed-branches (Trockenlauf) oder npx git-removed-branches --prune (für echte Durchführung). Sie müssen bereits node.js installiert haben. Siehe Antworten unten für Details.

0 Stimmen

Normalerweise denke ich, dass diese Dinge absichtlich und nicht automatisch erledigt werden sollten, da man sich sonst öffnet, etwas zu löschen, was man nicht löschen wollte. Also würde ich beim 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. Sie finden es in meinem Git-Erweiterungen Repository.

$ git-rprune --help
Entfernt alte lokale Branches, die nicht mehr im 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. Wird dies auch nicht mit dem Standard git prune kollidieren?

1 Stimmen

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

-2voto

Jason Waldrip Punkte 4889

Löschen Sie jeden Branch, der nicht auf dem neuesten Stand von 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 tun würde, ohne Änderungen vorzunehmen.

12 Stimmen

Das entfernt tatsächlich nicht den lokalen Branch selbst.

-10voto

Pedro Ballesteros Punkte 986

Benutzen Sie die grafische Benutzeroberfläche? Manueller Vorgang, aber schnell und einfach.

$ git gui

Wählen Sie "Branch -> Löschen" aus. 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. Meiner Meinung nach ist dies ein völlig gültiger Ansatz, wenn man GUI mag.

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