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

70voto

Hunter Punkte 2260

Mit dem folgenden Befehl werden alle lokalen Zweige außer dem Master-Zweig gelöscht.

git branch | grep -v "master" | xargs git branch -D

Der obige Befehl

  1. alle Zweigstellen auflisten
  2. Ignorieren Sie in der Liste den Hauptzweig und nehmen Sie die übrigen Zweige
  3. die Verzweigung löschen

70voto

sblom Punkte 26177

So löschen Sie alle Zweige mit Ausnahme des Zweigs, den Sie gerade ausgecheckt haben:

for b in `git branch --merged | grep -v \*`; do git branch -D $b; done

Ich würde empfehlen, die git branch -D $b zu einer echo $b die ersten Male, um sicherzustellen, dass die gewünschten Zweige gelöscht werden.

45voto

Ashish Yadav Punkte 2773

So löschen Sie alle lokale Zweige in Linux außer die, auf der Sie sich befinden

// hard delete

git branch -D $(git branch)

43voto

Adam Dymitruk Punkte 116211

Nur eine Anmerkung: Ich würde auf Git 1.7.10 aktualisieren. Es kann sein, dass du hier Antworten bekommst, die mit deiner Version nicht funktionieren. Ich vermute, dass Sie dem Namen der Verzweigung folgendes voranstellen müssen refs/heads/ .

ACHTUNG, fahren Sie mit den folgenden Schritten nur fort, wenn Sie eine Kopie Ihres Arbeitsordners und des .git-Verzeichnisses erstellt haben.

Manchmal lösche ich die Zweige, die ich nicht haben will, direkt aus .git/refs/heads . Alle diese Zweige sind Textdateien, die die 40 Zeichen lange sha-1 des Commits enthalten, auf den sie verweisen. Sie werden fremde Informationen in Ihrem .git/config wenn Sie für einen von ihnen eine spezielle Nachverfolgung eingerichtet haben. Sie können diese Einträge auch manuell löschen.

29voto

culebrón Punkte 30699

Ich fand es einfacher, nur einen Texteditor und eine Shell zu verwenden.

  1. Tipo git checkout <TAB> in der Schale. Zeigt alle lokalen Zweigstellen an.
  2. Kopieren Sie sie in einen Texteditor und entfernen Sie diejenigen, die Sie behalten möchten.
  3. Ersetzen Sie Zeilenumbrüche durch Leerzeichen. (In SublimeText ist das super einfach.)
  4. Shell öffnen, Typ git branch -D <PASTE THE BRANCHES NAMES HERE> .

Das war's.

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