Nachfolgend eine Anpassung von @wisbuckys Antwort für Windows-Benutzer:
for /f "tokens=1" %i in ('git branch -vv ^| findstr ": gone]"') DO git branch %i -d
Ich benutze posh-git und leider mag PS das nackte for
nicht, daher 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 Branch [%1] wird gelöscht
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 mit "-D" für Branches, die nicht vollständig gemerged sind, aber die Sie trotzdem löschen möchten.
12 Stimmen
Möglicher Duplikat von Lokale Branches entfernen, die nicht mehr auf dem Remote-Server vorhanden sind
8 Stimmen
Einzeiler, plattformübergreifend, sieht nicht so aus, als hätte die Katze auf deiner Tastatur geschlafen:
npx git-removed-branches
(Trockenlauf) odernpx 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.
3 Stimmen
Für IntelliJ-Benutzer tut das folgende Plugin genau das, was Sie benötigen: plugins.jetbrains.com/plugin/10059-git-branch-cleaner