Im Folgenden finden Sie eine Adaption der Antwort von @wisbucky 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, deshalb 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 Lösche Branch [%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 mit "-D" für alle 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 vorhanden sind
8 Stimmen
Einzeiler, plattformübergreifend, sieht nicht aus, als hätte die Katze auf Ihrer 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 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.
3 Stimmen
Für IntelliJ-Benutzer tut das folgende Plugin genau das, was Sie brauchen: plugins.jetbrains.com/plugin/10059-git-branch-cleaner