Ich wollte etwas, das alle lokalen Branches löscht, die einem Remote-Branch auf origin
folgen, wo der Remote-Branch gelöscht wurde (gone
). Ich wollte nicht lokale Branches löschen, die nie eingerichtet wurden, um einem Remote-Branch zu folgen (d.h. meine lokalen Entwicklungs-Branches). Außerdem wollte ich eine einfache Einzeiler, der einfach git
oder andere einfache CLI-Tools verwendet, anstatt benutzerdefinierte Skripte zu schreiben. Am Ende habe ich einen kleinen Teil von grep
und awk
benutzt, um diesen einfachen Befehl zu machen, und ihn dann als Alias in meiner ~/.gitconfig
hinzugefügt.
[alias]
prune-branches = !git remote prune origin && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -D
Hier ist ein git config --global ...
Befehl, um dies einfach als git prune-branches
hinzuzufügen:
git config --global alias.prune-branches '!git remote prune origin && git branch -vv | grep '"'"': gone]'"'"' | awk '"'"'{print $1}'"'"' | xargs -r git branch -d'
HINWEIS: Die Verwendung der -D
Flagge für git branch
kann sehr gefährlich sein. Daher benutze ich in dem obigen Konfigurationsbefehl die -d
Option für git branch
anstelle von -D
; ich benutze -D
in meiner tatsächlichen Konfiguration. Ich benutze -D
, weil ich nicht möchte, dass Git sich über nicht zusammengeführte Branches beschwert, ich will einfach, dass sie verschwinden. Möglicherweise möchten Sie diese Funktionalität auch. Wenn ja, verwenden Sie einfach am Ende des Konfigurationsbefehls -D
anstelle von -d
.
12 Stimmen
Möglicher Duplikat von Lokale Branches entfernen, die nicht mehr auf dem Server vorhanden sind
8 Stimmen
One-Liner, 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 weitere Details.0 Stimmen
Ich denke normalerweise, dass diese Dinge absichtlich und nicht automatisch erledigt werden sollten, da Sie sich sonst offenlegen, etwas zu löschen, das Sie nicht löschen wollten. Daher 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