La plupart des réponses ici compliquent trop l'analyse de la sortie de git branch -r
. Vous pouvez utiliser la for
boucle suivante pour créer les branches de suivi contre toutes les branches de la télécommande comme ceci.
Exemple
Disons que j'ai ces succursales éloignées.
$ git branch -r
origin/HEAD -> origin/master
origin/development
origin/integration
origin/master
origin/production
origin/staging
Confirmez que nous ne suivons déjà rien d'autre que le maître, localement:
$ git branch -l # or using just git branch
* master
Vous pouvez utiliser cette seule ligne pour créer les branches de suivi:
$ 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.
Maintenant confirmez:
$ git branch
development
integration
* master
production
staging
Pour les supprimer:
$ 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).
Si vous utilisez le -vv
commutateur pour, git branch
vous pouvez confirmer:
$ 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 ....
Répartition de la boucle for
La boucle appelle essentiellement la commande git branch -r
, filtrant toutes les branches HEAD ou master dans la sortie en utilisant grep -vE "HEAD|master"
. Pour obtenir les noms des seules branches moins la origin/
sous - chaîne, nous utilisons la manipulation de chaîne de Bash ${var#stringtoremove}
. Cela supprimera la chaîne "stringtoremove" de la variable $var
. Dans notre cas, nous supprimons la chaîne origin/
de la variable $i
.
REMARQUE: vous pouvez également utiliser git checkout --track ...
pour faire ceci:
$ for i in $(git branch -r | grep -vE "HEAD|master" | sed 's/^[ ]\+//'); do
git checkout --track $i; done
Mais je ne me soucie pas particulièrement de cette méthode, car elle vous permet de basculer entre les branches lors de la vérification. Une fois terminé, il vous laissera sur la dernière branche créée.
Références
git checkout --track origin/branchname