Ich wollte etwas, das alle lokalen Branches bereinigen 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 (z. B. 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, dann habe ich ihn 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 Befehl git config --global ...
, 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 Konfigurationsbefehl oben die -d
-Option für git branch
anstelle von -D
; Ich verwende -D
in meiner tatsächlichen Konfiguration. Ich verwende -D
, weil ich nicht möchte, dass Git sich über nicht zusammengeführte Branches beschwert, sondern sie einfach verschwinden sollen. Möglicherweise möchten Sie diese Funktionalität auch. In diesem Fall verwenden Sie einfach am Ende dieses Konfigurationsbefehls -D
anstelle von -d
.
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