Ich wollte etwas, das alle lokalen Branches löschen würde, die einem Remote-Branch auf origin
folgen, wenn der Remote-Branch gelöscht wurde (gone
). Ich wollte keine lokalen Branches löschen, die nie eingerichtet wurden, um einem Remote-Branch zu folgen (dh. meine lokalen Entwicklungs-Branches). Außerdem wollte ich einen einfachen Einzeiler, der einfach nur git
oder andere einfache CLI-Tools verwendet, anstatt benutzerdefinierte Skripte zu schreiben. Am Ende habe ich ein bisschen grep
und awk
verwendet, um diesen einfachen Befehl zu erstellen, 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 verwende ich in dem oben genannten Konfigurationsbefehl die -d
Option für git branch
anstelle von -D
; Ich verwende -D
in meiner tatsächlichen Konfiguration. Ich verwende -D
, weil ich nicht will, dass Git sich über nicht zusammengeführte Branches beschwert, ich will einfach, dass sie verschwinden. Möglicherweise möchten Sie auch diese Funktionalität. Wenn ja, verwenden Sie einfach -D
anstelle von -d
am Ende dieses Konfigurationsbefehls.
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