2009-09-13 9 views
215

J'ai essayé de trouver une commande git spéciale pour cela, mais je n'ai pas pu en trouver une. Quelqu'un peut-il suggérer quoi que ce soit plus court ou plus rapide que:Afficher uniquement la branche actuelle dans Git

git branch | awk '/\*/ { print $2; }' 
+1

je pense que c'est Fastes façon possible d'obtenir la branche actuelle – Eimantas

+0

double possible de [Comment obtenir le nom de la branche actuelle Git?] (Http://stackoverflow.com/questions/6245570/how-to- get-current-branche-name-in-git) –

+0

@ChandrayyaGK: Non, car l'autre question concerne le fait de le faire depuis votre IDE. (Beaucoup de réponses sont pour l'utilisation de la ligne de commande, donc ça vaut le coup d'oeil, mais ce n'est pas une bonne copie, et ces réponses devraient peut-être migrer ici, s'il y en a qui ajoutent une valeur significative à ce qui est déjà là.) – tripleee

Répondre

382
$ git rev-parse --abbrev-ref HEAD 
master 

Ceci devrait fonctionner avec Git 1.6.3 ou plus récent.

+0

Ne fonctionne pas pour moi non plus, avec git-1.6.2.5.git rev-parse --abbrev-ref HEAD => --abbrev-ref 311172491a9a667f9321bdf1c4fe5e22cc6e2c08 (c.-à-d. rev-parse n'accepte pas --abbrev-ref (pas dans la page man non plus)) – JasonWoof

+0

JasonWoof, travaille pour moi en 1.6 .4.2, besoin de changer le journal pour voir quand exactement cela s'est produit ;-) –

+6

Pour autant que je sache à partir des logs de Git, cette fonctionnalité a été fusionnée en 2009-04-20 et a été publiée avec la version 1.6.3. – earl

4

J'utilise

/etc/bash_completion.d/git 

Il est venu avec git et fournit une invite avec le nom de la branche et de l'achèvement de l'argument.

+0

Comment cette invite peut-elle être activée? – Alex

+0

Dans ubuntu, le fichier '$ source/etc // bash_completion.d/git-prompt' peut être nommé différemment sur différents systèmes. (Note: le mot-clé 'source' est le même que juste' .' (point) dans bash.) – michael

25

Vous pouvez être intéressé par la sortie de

git symbolic-ref HEAD 

En particulier, en fonction de vos besoins et la mise en page, vous voudrez peut-être faire

basename $(git symbolic-ref HEAD) 

ou

git symbolic-ref HEAD | cut -d/ -f3- 

puis encore une fois, il y a le fichier .git/HEAD qui peut également être d'intérêt pour vous.

+2

Vous pouvez raccourcir 'git rev-parse --symbolic-full-name' en' git symbolic-ref'. – earl

+1

Vous n'avez pas besoin d'utiliser 'basename' ou' cut'; utilisez 'BR = $ {BR # refs/heads /}' (où BR est le nom de la variable que vous avez sauvegardé en sortie de 'git symbolic-ref HEAD'). –

+0

Jakub, bien sûr que non, à condition d'avoir la sortie en variable. –

6

Ceci est un ancien fil que je viens de trébucher sur. D'après ce que je peux dire, il n'y a aucun moyen de montrer nativement que la branche actuelle GIT, donc je l'ai utilisé:

#> git branch | grep '*' 
+1

Alors que cela fonctionne avec GNU coreutils,' grep '*' 'est nominalement une erreur de syntaxe. Vous voulez probablement 'branche git | sed -n 's/^ \ * // p'' de toute façon. Ou en fait, ce que l'OP a posté en premier lieu, ce qui revient à la même chose. – tripleee

+0

@tripleee pouvez-vous m'éclairer sur pourquoi 'grep '*' 'est nominalement une erreur de syntaxe? –

+0

Tout comme le pluriel * s * en anglais n'a pas de sens utile en soi, vous ne pouvez pas dire "zéro ou plusieurs fois" dans l'isolement sans quelque chose avant lui. (J'ai pensé que je me souvenais que la documentation GNU 'grep' mentionne spécifiquement qu'un seul' * 'au début de la chaîne est interprété littéralement, ie comme [*]' dans une regex générale, mais je ne trouve pas cela documenté maintenant.) – tripleee

74

(je ne peux pas ajouter des commentaires aux réponses encore, donc)

dans Git 1.8.1, vous pouvez utiliser la commande symbolique-ref git avec l'option « --short »:

$ git symbolic-ref HEAD 
refs/heads/develop 
$ git symbolic-ref --short HEAD 
develop 
+0

Merci. Alias ​​créé. –

+3

Mieux que la réponse acceptée IMO, car cela fonctionne sur repos sans comms –

+0

Obtenir l'erreur 'fatal: ref HEAD n'est pas un ref symbolique lors de l'exécution de ce dans le cadre d'une construction TravisCI – kmanzana

0

Je suppose que cela devrait être rapide et peut être utilisé avec l'API python.

git branch --contains HEAD 
* master 
Questions connexes