Question Comment obtenir le nom de la branche actuelle dans Git?


Je viens d'un environnement Subversion et, quand j'avais une branche, je savais sur quoi je travaillais "Ces fichiers de travail pointent vers cette branche".

Mais avec Git, je ne suis pas sûr quand je suis en train d'éditer un fichier dans NetBeans ou Notepad ++, que ce soit lié au master ou à une autre branche.

Il n'y a pas de problème avec git En bash, ça me dit ce que je fais.


1711
2018-06-05 20:13


origine


Réponses:


git branch

devrait montrer toutes les branches locales de votre repo. La branche étoilée est votre branche actuelle.


1295
2018-06-05 20:17



git rev-parse --abbrev-ref HEAD

Cela affichera la branche actuelle.

Référence:


3636
2017-08-27 12:33



Vous avez aussi git symbolic-ref HEAD qui affiche le refspec complet.

Pour afficher uniquement le nom de la branche dans Git v1.8 et versions ultérieures (merci à Greg de le signaler):

$ git symbolic-ref --short HEAD

Sur Git v1.7 + vous pouvez aussi faire:

$ git rev-parse --abbrev-ref HEAD

Les deux devraient donner le même nom de branche si vous êtes sur une branche. Si vous êtes sur une tête détachée, les réponses diffèrent.

Remarque:

Sur un client précédent, cela semble fonctionner:

$ git symbolic-ref HEAD | sed -e "s/^refs\/heads\///"

- Darien 26. mars 2014


399
2017-08-08 15:55



Pour ma propre référence (mais elle pourrait être utile à d'autres), j'ai fait un survol de la plupart des techniques (de base de la ligne de commande) mentionnées dans ce fil, chacune appliquée à plusieurs cas d'utilisation: HEAD (pointant vers):

  • branche locale (maître)
  • branche de suivi à distance, en synchronisation avec la branche locale (origine / maître au même commit que le maître)
  • branche de suivi à distance, non synchronisée avec une branche locale (origin / feature-foo)
  • tag (v1.2.3)
  • tête détachée générale (aucune de ces réponses)

Résultats:

  • git branch | sed -n '/\* /s///p'
    • branche locale: master
    • branche de suivi à distance (en synchronisation): (detached from origin/master)
    • branche de suivi à distance (non synchronisée): (detached from origin/feature-foo)
    • marque: (detached from v1.2.3)
    • tête détachée générale: (detached from 285f294)
  • git status | head -1
    • branche locale: # On branch master
    • branche de suivi à distance (en synchronisation): # HEAD detached at origin/master
    • branche de suivi à distance (non synchronisée): # HEAD detached at origin/feature-foo
    • marque: # HEAD detached at v1.2.3
    • tête détachée générale: # HEAD detached at 285f294
  • git describe --all
    • branche locale: heads/master
    • branche de suivi à distance (en synchronisation): heads/master (Remarque: ne pas  remotes/origin/master)
    • branche de suivi à distance (non synchronisée): remotes/origin/feature-foo
    • marque: v1.2.3
    • tête détachée générale: v1.0.6-5-g2393761
  • cat .git/HEAD:
    • branche locale: ref: refs/heads/master
    • tous les autres cas d'utilisation: SHA du commit correspondant
  • git rev-parse --abbrev-ref HEAD
    • branche locale: master
    • tous les autres cas d'utilisation: HEAD
  • git symbolic-ref --short HEAD
    • branche locale: master
    • tous les autres cas d'utilisation: fatal: ref HEAD is not a symbolic ref

(Pour info, cela a été fait avec git version 1.8.3.1)


167
2017-10-25 08:53



Une autre alternative:

git name-rev --name-only HEAD

118
2017-11-02 19:17



Bien assez simple, je l'ai eu dans un seul paquebot (bash)

git branch | sed -n '/\* /s///p'

(crédit: Expiation limitée)

Et pendant que je suis là, le seul recouvrement pour obtenir la branche de suivi à distance (le cas échéant)

git rev-parse --symbolic-full-name --abbrev-ref @{u}

87
2018-04-04 15:20



Vous pouvez simplement taper en ligne de commande (console) sous Linux, dans le répertoire du référentiel:

$ git status

et vous verrez du texte, parmi lesquels quelque chose de semblable à:

...
On branch master
...

ce qui signifie que vous êtes actuellement sur master branche. Si vous modifiez un fichier à ce moment-là et qu'il se trouve dans le même référentiel local (répertoire local contenant les fichiers sous Git version control management), vous modifiez le fichier dans cette branche.


48
2018-06-05 20:31



git symbolic-ref -q --short HEAD

Je l'utilise dans les scripts qui ont besoin du nom de la branche en cours. Il vous montrera la courte référence symbolique actuelle à HEAD, qui sera votre nom de branche actuel.


26
2017-10-02 22:09



git branch | grep -e "^*" | cut -d' ' -f 2

affichera seulement le nom de la branche


24
2018-06-14 13:08



Trouvé une solution de ligne de commande de la même longueur que Oliver Refalo, en utilisant bon ol 'awk:

git branch | awk '/^\*/{print $2}'

awk lit comme "faire les choses dans {} sur les lignes correspondant à la regex. "Par défaut, il suppose des champs délimités par des espaces, donc vous imprimez la seconde Si vous pouvez supposer que seule la ligne avec votre branche a le *, vous pouvez lâcher le ^ Ah, bash golf!


21
2018-02-19 22:50



#!/bin/bash
function git.branch {
  br=`git branch | grep "*"`
  echo ${br/* /}
}
git.branch

16
2018-01-23 17:11