622 Stimmen

Alle lokalen Git-Zweige löschen

Ich folge einem Entwicklungsprozess, bei dem ich für jede neue Funktion oder Storycard einen neuen lokalen Zweig erstelle. Wenn ich fertig bin, führe ich den Zweig mit Master zusammen und veröffentliche ihn dann.

Was im Laufe der Zeit durch eine Kombination aus Faulheit und Vergesslichkeit passiert, ist, dass ich am Ende eine große Liste lokaler Zweige habe, von denen einige (wie z.B. Spikes) vielleicht noch nicht zusammengeführt wurden.

Ich weiß, wie ich alle meine lokalen Zweige auflisten kann und ich weiß, wie ich einen einzelnen Zweig entfernen kann, aber ich habe mich gefragt, ob es einen Git-Befehl gibt, mit dem ich alle meine lokalen Zweige löschen kann?

Nachfolgend ist die Ausgabe des git branch --merged Befehl.

user@machine:~/projects/application[master]$ git branch --merged
  STORY-123-Short-Description
  STORY-456-Another-Description
  STORY-789-Blah-Blah
* master

Alle Versuche, Zweige zu löschen, die mit grep -v \* (gemäß den nachstehenden Antworten) führen zu Fehlern:

error: branch 'STORY-123-Short-Description' not found.
error: branch 'STORY-456-Another-Description' not found.
error: branch 'STORY-789-Blah-Blah' not found.

Ich benutze:

git 1.7.4.1  
ubuntu 10.04  
GNU bash, version 4.1.5(1)-release  
GNU grep 2.5.4

15voto

4u.Ans Punkte 1249

Ich hatte eine ähnliche Situation und fand kürzlich den folgenden Befehl nützlich.

git branch -D `git branch | awk '{ if ($0 !~ /<Branch_You_Want_to_Keep>/) printf "%s", $0 }'`

Wenn Sie mehrere Zweige behalten wollen, dann

git branch -D `git branch | awk '{ if ($0 !~ /<Branch_You_Want_to_Keep1>|<Branch_You_Want_to_Keep2>/) printf "%s", $0 }'`

Ich hoffe, das hilft jemandem.

12voto

Rudy Huynh Punkte 490

Wenn Sie mit NodeJS arbeiten, schrieb ich dieser Befehl :

npx git-clear-branch

Der Befehl löscht den gesamten lokalen Zweig außer dem Master und dem aktuellen Zweig.

10voto

forvaidya Punkte 2745
git branch -l |grep -v master | xargs git branch -D

Aber was kümmert es, einen Zweig zu löschen; entfernen Sie einfach den Arbeitsbereich und klonen Sie ihn neu, wenn es sich um ein kleines Repository handelt!

9voto

Dane Bouchie Punkte 411

Obwohl es sich nicht um eine Kommandozeilenlösung handelt, bin ich überrascht, dass die Git-GUI ist noch nicht vorgeschlagen worden.

Ich verwende zu 99 % die Befehlszeile, aber in diesem Fall ist sie entweder viel zu langsam (daher die ursprüngliche Frage), oder Sie wissen nicht, was Sie löschen wollen, wenn Sie auf eine langwierige, aber clevere Shell-Manipulation zurückgreifen.

Die Benutzeroberfläche löst dieses Problem, da Sie schnell die Zweige abhaken können, die Sie entfernen möchten, und an diejenigen erinnert werden, die Sie beibehalten möchten, ohne dass Sie für jeden Zweig einen Befehl eingeben müssen.

Gehen Sie auf der UI zu Zweig --> Löschen et Strg+Klick die Zweige, die Sie löschen möchten, damit sie markiert sind. Wenn Sie sicher sein wollen, dass sie in einem Zweig zusammengeführt werden (z.B. dev ), unter Nur löschen, wenn verschmolzen mit einstellen. Lokale Niederlassung a dev . Andernfalls setzen Sie ihn auf Immer um diese Prüfung zu ignorieren.

GitUI: delete local branches

7voto

user4401817 Punkte 81

Keine der Antworten befriedigte meine Bedürfnisse voll und ganz, also los geht's:

git branch --merged | grep -E "(feature|bugfix|hotfix)/" | xargs git branch -D && git remote prune origin

Dadurch werden alle lokalen Zweige gelöscht, die zusammengeführt werden und mit feature/ , bugfix/ o hotfix/ . Anschließend wird die vorgelagerte Remote origin beschnitten wird (Sie müssen eventuell ein Passwort eingeben).

Funktioniert mit Git 1.9.5.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X