Die meisten Antworten hier erschweren das Parsen der Ausgabe von git branch -r. Sie können Folgendes verwendenfor Schleife die Tracking-Zweige wie für alle Zweige auf der Fernbedienung erstellen.
Beispiel
Angenommen, ich habe diese entfernten Zweige.
$ git branch -r
origin/HEAD -> origin/master
origin/development
origin/integration
origin/master
origin/production
origin/staging
Stellen Sie sicher, dass wir lokal noch nichts anderes als den Master verfolgen:
$ git branch -l # or using just git branch
* master
Mit diesem einen Liner können Sie die Tracking-Zweige erstellen:
$ for i in $(git branch -r | grep -vE "HEAD|master"); do
git branch --track ${i#*/} $i; done
Branch development set up to track remote branch development from origin.
Branch integration set up to track remote branch integration from origin.
Branch production set up to track remote branch production from origin.
Branch staging set up to track remote branch staging from origin.
Bestätigen Sie nun:
$ git branch
development
integration
* master
production
staging
So löschen Sie sie:
$ git br -D production development integration staging
Deleted branch production (was xxxxx).
Deleted branch development (was xxxxx).
Deleted branch integration (was xxxxx).
Deleted branch staging (was xxxxx).
Wenn Sie den -vvSchalter verwenden, können git branchSie Folgendes bestätigen:
$ git br -vv
development xxxxx [origin/development] commit log msg ....
integration xxxxx [origin/integration] commit log msg ....
* master xxxxx [origin/master] commit log msg ....
production xxxxx [origin/production] commit log msg ....
staging xxxxx [origin/staging] commit log msg ....
Aufschlüsselung der for-Schleife
Die Schleife ruft im Grunde den Befehl auf git branch -rund filtert mit HEAD oder Master-Zweigen in der Ausgabe heraus grep -vE "HEAD|master". Um nur die Namen der Zweige abzüglich der origin/Teilzeichenfolge zu erhalten, verwenden wir die String-Manipulation von Bash ${var#stringtoremove}. Dadurch wird die Zeichenfolge "stringtoremove" aus der Variablen entfernt $var. In unserem Fall entfernen wir die Zeichenfolge origin/aus der Variablen $i.
HINWEIS: Alternativ können git checkout --track ...Sie dies auch verwenden:
$ for i in $(git branch -r | grep -vE "HEAD|master" | sed 's/^[ ]\+//'); do
git checkout --track $i; done
Diese Methode interessiert mich jedoch nicht besonders, da sie Sie beim Auschecken zwischen den Zweigen wechselt. Wenn Sie fertig sind, bleiben Sie auf dem letzten Zweig, den es erstellt hat.
Verweise
git checkout --track origin/branchname