Im Folgenden handelt es sich um eine Anpassung von @wisbucky's Antwort für Windows-Benutzer:
for /f "tokens=1" %i in ('git branch -vv ^| findstr ": gone]"') DO git branch %i -d
Ich verwende posh-git und leider mag PS das nackte for
nicht, also habe ich ein einfaches Befehlsskript namens PruneOrphanBranches.cmd erstellt:
@ECHO OFF
for /f "tokens=1" %%i in ('git branch -vv ^| findstr ": gone]"') DO CALL :ProcessBranch %%i %1
GOTO :EOF
:ProcessBranch
IF /I "%2%"=="-d" (
git branch %1 %2
) ELSE (
CALL :OutputMessage %1
)
GOTO :EOF
:OutputMessage
ECHO Wird Branch löschen [%1]
GOTO :EOF
:EOF
Rufen Sie es ohne Parameter auf, um eine Liste zu sehen, und rufen Sie es dann mit "-d" auf, um die tatsächliche Löschung durchzuführen oder "-D" für Branches, die nicht vollständig zusammengeführt sind, aber die Sie trotzdem löschen möchten.
12 Stimmen
Möglicher Duplikat von Lokale Branches entfernen, die nicht mehr auf Remote sind
8 Stimmen
One-Liner, plattformübergreifend, sieht nicht so aus, als hätte die Katze auf deiner Tastatur geschlafen:
npx git-removed-branches
(Probelauf) odernpx git-removed-branches --prune
(für echte). Sie müssen bereits node.js installiert haben. Siehe Antworten unten für Details.0 Stimmen
Ich denke normalerweise, dass diese Dinge bewusst und nicht automatisch durchgeführt werden sollten, da man sich sonst selbst öffnet, etwas zu löschen, was man nicht löschen wollte. Deshalb würde ich bei git branch -d localBranchName und git push origin --delete remoteBranchName bleiben.
3 Stimmen
Für IntelliJ-Benutzer bietet das folgende Plugin genau das, was Sie benötigen: plugins.jetbrains.com/plugin/10059-git-branch-cleaner