Git: Comment lister uniquement les succursales locales?

935

git branch -a affiche les succursales distantes et locales.

git branch -r montre les branches distantes.

Existe-t-il un moyen de répertorier uniquement les succursales locales?

munyengm
la source

Réponses:

1444

Juste git branchsans options.

Depuis la page de manuel:

En l'absence d'arguments, les branches existantes sont répertoriées et la branche actuelle sera mise en surbrillance avec un astérisque.

gertvdijk
la source
25
J'espérais trouver un moyen de lister les branches locales qui n'ont pas de branche distante correspondante.
Steve Crane
5
Pas complètement, mais les réponses à ma question Comment puis-je répertorier les succursales locales qui n'ont pas de succursale distante fournissent de l'aide.
Steve Crane
3
@ c00kiemon5ter J'adore la façon dont vous avez trouvé un moyen d'obtenir un tas de points de toute façon! Si amusant.
Abram
4
comment est-ce la bonne réponse à ce qui a été demandé ("... pour lister * seulement les succursales locales ...") ???
Wagner da Silva
7
@ gr4viton: Dans les dialectes de l'anglais que je connais, "lister uniquement les branches locales" est généralement analysé comme "lister uniquement les branches qui sont locales". (Pour dire "lister les branches qui ne sont que locales", je dirais "lister les branches uniquement locales".)
Mathieu K.
221

juste la commande simple

git branch
c00kiemon5ter
la source
5
Cette réponse a exactement le même horodatage que la réponse acceptée. La réponse acceptée doit être en avance en millisecondes :)
RBT
4
@RBT Passez la souris sur les temps. Cette réponse était 9 secondes plus rapide.
Kevin Workman, le
1
c00kiemon5ter mérite le crédit pour la réponse!
skydev
75

git branch -a- Toutes les succursales.

git branch -r- Branches distantes uniquement.

git branch -l ou git branch- succursales locales uniquement.

shortduck
la source
Pour moi, le formatage de cette réponse suggère les -lstands pour --local, alors qu'il est en fait --list. Je suggérerais de le supprimer pour éviter cette confusion - techniquement, toutes les commandes de cette réponse pourraient utiliser -let elles renverraient toujours les mêmes résultats.
Thibaud Colas
34

Si l'astérisque de tête est un problème, je le redirige git branchcomme suit

git branch | awk -F ' +' '! /\(no branch\)/ {print $2}'

Cela élimine également la ligne «(pas de branche)» qui apparaît lorsque vous avez la tête détachée.

John Marter
la source
1
J'ai dû le modifier git branch | awk -F ' +' '$2 !~ /detached/ {print $2}'pour la version 1.9.1 de git.
iurii
6
cut -c 3-est une option plus facile
Alexey
33

L'une des façons les plus simples de le faire est

git for-each-ref --format='%(refname:short)' refs/heads/

Cela fonctionne également parfaitement pour les scripts.

Victor Yarema
la source
12

Voici comment répertorier les branches locales qui n'ont pas de branche distante d'origine portant le même nom:

git branch | sed 's|* |  |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote
Shnatsel
la source
3
Nice, aussi oneliner: comm -23 <(git branch | sed 's|* | |' | sort) <(git branch -r | sed 's|origin/||' | sort )
gr4viton
10

Une autre façon d'obtenir une liste juste une branche locale est:

git branch -a | grep -v 'remotes'
jlsanchezr
la source
4

Il existe une excellente réponse à un message sur la suppression de branches locales uniquement. Dans ce document, le boursier crée une commande pour répertorier les branches locales:

git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'

La réponse a une grande explication sur la façon dont cette commande a été dérivée, donc je vous suggère d'aller lire ce post.

Samwar
la source
Merci d'avoir lié la réponse. J'avais besoin d'un algo pour répertorier les succursales locales qui ne suivent PAS une télécommande. Celui-ci est le seul à faire le travail.
JuroOravec
2

Pour compléter la réponse de @ gertvdijk - j'ajoute quelques captures d'écran au cas où cela aiderait quelqu'un rapidement.

Sur ma coquille de git bash

git branch

commande sans aucun paramètre montre toutes mes branches locales. La branche actuelle qui est actuellement extraite est affichée en différentes couleurs (vert) avec un préfixe astérisque (*) qui est vraiment intuitif.

entrez la description de l'image ici

Lorsque vous essayez de voir toutes les branches, y compris les branches distantes à l'aide

git branch -a

puis les branches distantes qui ne sont pas encore extraites sont affichées en rouge:

entrez la description de l'image ici

RBT
la source
1
Mille mots dont on ne peut pas copier?
Tony Adams
2
@TonyAdams Je suis désolé si je manque quelque chose mais les deux commandes dont j'ai affiché la sortie dans les images ont été mentionnées en arrière-plan gris (formatage du code) dans le message. Peu importe, j'ai amélioré la mise en forme du message pour le rendre encore plus lisible. Appréciez vos commentaires.
RBT