Comment obtenir le nom de la branche actuelle dans Git?

2595

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

Mais avec Git, je ne sais pas quand je modifie un fichier dans NetBeans ou Notepad ++, qu'il soit lié au maître ou à une autre branche.

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

mike628
la source
11
Laissez votre IDE afficher le fichier .git/HEAD, éventuellement dans un répertoire parent
Tino
101
stackoverflow.com/questions/1417957/… $ git rev-parse --abbrev-ref HEAD
fantastory
7
Copie
9
, Vous aurez une approche plus simple avec Git 2,22 (Q2 2019): git branch --show-current. Voir ma réponse ici .
VonC

Réponses:

2305
git branch

devrait montrer toutes les branches locales de votre repo. La branche suivie est votre branche actuelle.

Si vous souhaitez récupérer uniquement le nom de la branche sur laquelle vous vous trouvez, vous pouvez faire:

git rev-parse --abbrev-ref HEAD
roberttdev
la source
Mais cela ne m'aide pas avec Notepad ++ et Netbeans. Juste git bash (et probablement Vim) et je l'ai mentionné. Je vais essayer de travailler avec d'autres éditeurs Ide et texte qui ne sont pas en ligne de commande.
mike628
@ mike628 En fait, ils vous aident, sauf que vous voulez quelque chose accessible via l'interface graphique. Correct?
Tadeck
2
Si vous êtes prêt à travailler dans Eclipse, il existe un programme appelé "eGit" qui possède une interface graphique qui vous indiquera la branche actuelle pour tous les dépôts qu'il contient. Sinon, je ne sais pas .. vous seriez à la merci du créateur du plugin que vous voudriez utiliser et compatible avec votre choix de programme (s'il y en a).
roberttdev
2
après avoir fait un, git checkout --orphan foopuis git branchn'a pas montré de branche foo. Alors que git symbolic-ref HEADcomme suggéré, une autre réponse a fonctionné.
Marcus Junius Brutus
2
downvote, nous voulons que la branche actuelle soit stdout, pas toutes les branches
Alexander Mills
4657

Pour afficher la branche actuelle sur laquelle vous vous trouvez, sans les autres branches répertoriées, vous pouvez effectuer les opérations suivantes:

git rev-parse --abbrev-ref HEAD

Référence:

Jistanidiot
la source
132
@ChrisNelson, car il affiche uniquement la branche actuelle, plutôt qu'une longue liste de toutes les branches.
avakar
73
Bon, malheureusement, cela ne fonctionne pas si vous êtes dans un état «HEAD détaché» (il ne produit que «HEAD», ce qui est totalement inutile).
Carlos Campderrós
34
Je suppose que par les internes de git, si vous êtes dans un état de `` tête détachée '', il n'y a pas de suivi de la branche à laquelle il appartient, parce que les git branchspectacles * (no branch), ce qui est également inutile ...
Carlos Campderrós
76
"git symbolic-ref --short HEAD" fonctionne également dans le même but
dusktreader
22
git rev-parse --abbrev-ref HEAD 2>/dev/null La partie / dev / null vous empêche de voir une erreur si vous venez de créer un nouveau référentiel qui n'a pas encore HEAD.
Paradiesstaub
523

Vous avez également git symbolic-ref HEADqui affiche la spécification complète.

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

git symbolic-ref --short HEAD

Sur Git v1.7 +, vous pouvez également faire:

git rev-parse --abbrev-ref HEAD

Les deux doivent 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 antérieur, cela semble fonctionner:

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

- Darien 26. mars 2014

Wernight
la source
7
Comme toutes les autres réponses, cela ne fonctionne pas lorsque vous êtes dans un état de «
tête
51
@ CarlosCampderrós: ​​si vous êtes dans un état HEAD détaché, il n'y a pas de branche actuelle. Après tout, le commit dans lequel vous vous trouvez peut être accessible par zéro, une ou plusieurs branches.
Flimm
2
cela crée des problèmes dans les dépôts git vides quand il n'y a pas de HEAD
Arne
8
Avec git, la version 2.4.4 git rev-parse --abbrev-ref HEADmontre HEADquand vous êtes sur une tête détachée.
peterhil
La meilleure réponse est toujours git symbolic-ref HEAD | sed -e "s/^refs\/heads\///" car il affichera une chaîne comme HEAD detached at a63917fdans un état détaché, contrairement aux autres réponses qui ne montrent rien ou HEAD. C'est important.
Bernard
265

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

  • succursale locale (maître)
  • branche de suivi à distance, en synchronisation avec la branche locale (origine / maître au même commit que maître)
  • branche de suivi à distance, non synchronisée avec une branche locale (origine / fonctionnalité-foo)
  • balise (v1.2.3)
  • sous-module (exécuté dans le répertoire du sous-module)
  • 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)
    • étiquette: (detached from v1.2.3)
    • sous-module: (HEAD detached at 285f294)
    • 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
    • étiquette: # HEAD detached at v1.2.3
    • sous-module: # HEAD detached at 285f294
    • tête détachée générale: # HEAD detached at 285f294
  • git describe --all
    • branche locale: heads/master
    • branche de suivi à distance (synchronisée): heads/master(remarque: non remotes/origin/master )
    • branche de suivi à distance (non synchronisée): remotes/origin/feature-foo
    • étiquette: v1.2.3
    • sous-module: remotes/origin/HEAD
    • tête détachée générale: v1.0.6-5-g2393761
  • cat .git/HEAD:
    • branche locale: ref: refs/heads/master
    • sous-module: cat: .git/HEAD: Not a directory
    • 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 la version 1.8.3.1 de git)

Stefaan
la source
6
En résumé, aucun ne semble faire exactement ce que je ferais à la main.
bukzor
6
Cela m'a été très utile: git describe --all --exact-match 2>/dev/null | sed 's=.*/=='c'était la meilleure solution pour moi (bons noms pour les balises et les têtes de branche, pas de sortie pour les têtes détachées aléatoires.
Alex Dupuy
1
Cependant, je viens de découvrir que l'utilisation git describea un sérieux échec lorsqu'il y a plusieurs branches référençant le même commit, par exemple juste après git checkout -b foo- il en utilise une arbitrairement (semble être la plus récente). Je vais changer ma stratégie pour utiliser une sortie filtrée git branchet ne l'utiliser que git describesi le résultat concerne une tête détachée.
Alex Dupuy
En fait, je dois utiliser git branch --no-colorpour m'assurer que le nom de fichier est exempt de codes d'échappement terminaux ennuyeux.
Alex Dupuy
2
Cela m'a été très utile plus d'une fois, merci d'être si minutieux!
Alice Purcell
154

Depuis la version 2.22 de git, vous pouvez simplement utiliser:

git branch --show-current

Selon la page de manuel:

Imprimez le nom de la branche actuelle. Dans l'état HEAD détaché, rien n'est imprimé.

Max
la source
2
Oui, je l'ai mentionné en mars dernier dans les commentaires de cette page: stackoverflow.com/questions/6245570/… . Et dans stackoverflow.com/a/55088865/6309 .
VonC
5
Mentionnez au moins que cela ne fonctionne pas dans l'état HEAD détaché. Je viens de perdre des heures à compiler git 2.22 pour rien ...
David Deprost
136

Encore une alternative:

git name-rev --name-only HEAD
Filip Spiridonov
la source
il peut également être récupéré avececho ${$(git symbolic-ref --quiet HEAD)#refs/heads/}
Antoine
12
Cela ne fonctionne pas si HEAD est le même pour le master et la branche de fonctionnalité (par exemple pendant la fusion). Il retourne 'master' même s'il est exécuté sur la branche de fonctionnalité.
Orest Hera
1
git checkout master && git name-rev --name-only HEAD # ac-187Cela ne fonctionne pas comme prévu
Alexander Abashkin
Je l'enregistre dans une variable juste avant la fusion et également dans le cas où mon HEAD pourrait se détacher si je vérifie un commit particulier. Dans ces cas, cela fonctionne bien.
Ishaan Sejwal
4
Je fais cela à partir d'un pipeline Jenkins. Cela semble donc être pour le moment la meilleure réponse pour moi. Faire git branch --listdit simplement * (HEAD detached at 7127db5). Faire git rev-parse --abbrev-ref HEADdit simplement HEADet ainsi de suite.
Mig82
91

Eh bien assez simple, je l'ai eu dans une doublure (bash)

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

(crédit: Expiation limitée)

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

git rev-parse --symbolic-full-name --abbrev-ref @{u}
Olivier Refalo
la source
8
Trop de barres obliques! :) sed -n 's/\* //p'fait l'affaire. Bien que je tende vers le paranoïaque, je vais donc l'ancrer sed -n 's/^\* //p'.
Mark Reed
65

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 similaire à:

...
On branch master
...

ce qui signifie que vous êtes actuellement en mastersuccursale. Si vous modifiez un fichier à ce moment et qu'il se trouve dans le même référentiel local (répertoire local contenant les fichiers qui sont sous la gestion du contrôle de version Git), vous modifiez le fichier dans cette branche.

Tadeck
la source
2
En fonction de ce que vous voulez faire, vous pouvez utiliser git statuset obtenir uniquement la première ligne de sortie git status | head -1qui donne quelque chose comme # On branch master. Je suis sûr que les différences de version devront également être prises en compte.
Joshua Pinter
@JoshPinter: Vous pouvez également utiliser git status | grep 'On branch', ce qui devrait avoir le même effet (devrait, ne signifie pas que ce sera le cas si votre version de Git l'affiche différemment). Ou git branch | grep '*', qui affichera le nom de la branche avec une étoile au début.
Tadeck
Oui, cela fonctionne aussi bien et pourrait être plus flexible. Mon résultat final pour n'afficher que le nom de la branche dans une application dev Rails était:<tick>git status | head -1<tick>.gsub('# On branch ', '')
Joshua Pinter le
1
git statusle retour d'une valeur peut prendre un certain temps si de nombreux fichiers sont gérés.
The Tin Man
Ouais, si vous voulez imprimer la branche sur une page Web, par exemple, cela git statuspeut débiter le temps de génération de la page entière.
Artem Russakovskii
36
git symbolic-ref -q --short HEAD

J'utilise ceci dans des scripts qui ont besoin du nom de branche actuel. Il vous montrera la courte référence symbolique actuelle à HEAD, qui sera le nom de votre branche actuelle.

Kousha
la source
1
Merci, fonctionne très bien! - J'ajoute également "-C path_to_folder" dans mon script avec ceci.
Tony
1
C'est une bonne solution car avec l'option -q, elle renvoie un code d'erreur dans l'état "HEAD détaché" mais n'imprime rien sur stderr.
hallidave
c'est la seule solution qui a fonctionné pour moi sur un nouveau repo sans aucun engagement
kundasaba
26
git branch | grep -e "^*" | cut -d' ' -f 2

n'affichera que le nom de la branche

ungalcrys
la source
Si votre branche affiche quelque chose comme ceci "* (HEAD détaché à SUM_BRANCH_01)", alors essayez cette "git branch | grep -e" ^ * "| cut -d '' -f 5 | cut -d ')' -f 1 "
Dylan Kapp
Je viens de créer ce même script pour obtenir le nom de la branche actuelle. J'ai pensé que cela pourrait aider avec les différences.
tggagne
25

git branch affiche uniquement le nom de la branche actuelle.

Alors que git branch vous montrera toutes les branches et mettra en surbrillance la branche actuelle avec un astérisque, cela peut être trop lourd lorsque vous travaillez avec beaucoup de branches.

Pour afficher uniquement la branche sur laquelle vous vous trouvez actuellement, utilisez:

git rev-parse --abbrev-ref HEAD
Lawrence Paje
la source
c'est génial pour ci, et pour d'autres outils de build!
phouse512
meilleure réponse pour l'utiliser dans un script
Ben Keil
1
@DylanNicholson git branch --containsrépertorie parfois plus d'une branche.
Joe Chacko
22

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

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

awklit cela comme "faire le truc {}sur des lignes correspondant à l'expression régulière". Par défaut, il suppose des champs séparés par des espaces, vous imprimez donc le second. Si vous pouvez supposer que seule la ligne avec votre branche a le *, vous pouvez supprimer le ^. Ah, bash golf!

Silas Barta
la source
19
#!/bin/bash
function git.branch {
  br=`git branch | grep "*"`
  echo ${br/* /}
}
git.branch
Dziamid
la source
18

Pourquoi ne pas utiliser l'invite du shell git-aware, qui vous indiquerait le nom de la branche actuelle? git statusaide également.


Comment git-prompt.sh de contrib/fait il (version git 2.3.0), tel que défini dans la __git_ps1fonction d'aide:

  1. Tout d'abord, il existe un cas particulier si un rebase en cours est détecté. Git utilise une branche sans nom (HEAD détaché) pendant le processus de rebase pour la rendre atomique, et la branche d'origine est enregistrée ailleurs.

  2. Si le .git/HEADfichier est un lien symbolique (un cas très rare, de l'histoire ancienne de Git), il utilisegit symbolic-ref HEAD 2>/dev/null

  3. Sinon, il lit le .git/HEADfichier. Les prochaines étapes dépendent de son contenu:

    • Si ce fichier n'existe pas, il n'y a pas de branche courante. Cela se produit généralement si le référentiel est vide.

    • Si elle commence par le 'ref: 'préfixe, alors .git/HEADest symref (référence symbolique), et nous sommes sur une branche normale. Supprimez ce préfixe pour obtenir le nom complet et supprimez refs/heads/pour obtenir le nom court de la branche actuelle:

      b="${head#ref: }"
      # ...
      b=${b##refs/heads/}
      
    • S'il ne démarre pas 'ref: ', il est détaché HEAD (branche anonyme), pointant directement vers une validation. Permet git describe ...d'écrire le commit actuel sous une forme lisible par l'homme.

J'espère que ça aide.

Jakub Narębski
la source
3
Et si vous développez une invite shell compatible avec git, laquelle des réponses ici devez-vous utiliser? Des tortues tout le long.
tripleee
1
@tripleee: empruntez des idées à github.com/git/git/blob/master/contrib/completion/git-prompt.sh
Jakub Narębski
4
Ce qui pour le dossier semble être en train de faire, ce git describe --contains --all HEADque je ne vois pas actuellement ailleurs sur cette page. Comme je suis sûr que vous le savez, les réponses de lien uniquement ne sont pas recommandées sur StackOverflow.
tripleee
2
@tripleee: J'ai ajouté une explication comment git-prompt.sh(aka __git_ps1) le fait ...
Jakub Narębski
17

Une version moins bruyante pour le statut git ferait l'affaire

git status -bsuno

Il imprime

## branch-name
dgolovin
la source
1
## développer ... origine / développer
Kalpesh Soni
16

Désolé, c'est une autre réponse en ligne de commande, mais c'est ce que je cherchais lorsque j'ai trouvé cette question et bon nombre de ces réponses étaient utiles. Ma solution est la fonction shell bash suivante:

get_branch () {
    git rev-parse --abbrev-ref HEAD | grep -v HEAD || \
    git describe --exact-match HEAD 2> /dev/null || \
    git rev-parse HEAD
}

Cela devrait toujours me donner quelque chose à la fois lisible par l'homme et directement utilisable comme argument git checkout.

  • sur une succursale locale: feature/HS-0001
  • sur un commit balisé (détaché): v3.29.5
  • sur une branche distante (détachée, non balisée): SHA1
  • sur tout autre commit détaché: SHA1
dmaestro12
la source
1
Merci d'avoir posté ceci, aucune des autres réponses ne semblait se soucier de toujours produire quelque chose utilisable comme argument git checkout.
zwol
15

vous pouvez utiliser git bash sur la commande de répertoire de travail comme suit

git status -b

il vous dira sur quelle branche vous vous trouvez il y a beaucoup de commandes qui sont utiles dont certaines sont

-s

--short Donne la sortie au format court.

-b --branch Affiche la branche et les informations de suivi même en format court.

--porcelain [=] Donnez la sortie dans un format facile à analyser pour les scripts. Ceci est similaire à la sortie courte, mais restera stable dans toutes les versions de Git et quelle que soit la configuration utilisateur. Voir ci-dessous pour plus de détails.

Le paramètre version est utilisé pour spécifier la version du format. Ceci est facultatif et revient par défaut au format original de la version v1.

--long Donne la sortie au format long. C'est la valeur par défaut.

-v --verbose En plus des noms des fichiers qui ont été modifiés, affichez également les modifications textuelles qui doivent être validées (c'est-à-dire, comme la sortie de git diff --cached). Si -v est spécifié deux fois, affichez également les modifications dans l'arborescence de travail qui n'ont pas encore été mises en scène (c'est-à-dire, comme la sortie de git diff).

Prateek Gangwal
la source
14
git status 

donnera également le nom de la branche avec les modifications.

par exemple

>git status
On branch master // <-- branch name here
.....
Satheesh Kumar
la source
13

Au fil du temps, nous pourrions avoir une très longue liste de succursales.

Bien que certaines des autres solutions soient excellentes, voici ce que je fais (simplifié à partir de la réponse de Jacob):

git branch | grep \*

Maintenant,

git status

fonctionne, mais seulement s'il y a des changements locaux

karthikr
la source
13

Je recommande d'utiliser l'une de ces deux commandes.

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

OU

git status | sed -n 1p | cut -d' ' -f 3

OU (plus verbeux)

git status -uno -bs| cut -d'#' -f 3 | cut -d . -f 1| sed -e 's/^[ \t]//1'| sed -n 1p

jackotonye
la source
12

Dans Netbeans, assurez-vous que les annotations de version sont activées (Affichage -> Afficher les étiquettes de version). Vous pouvez alors voir le nom de la branche à côté du nom du projet.

http://netbeans.org/bugzilla/show_bug.cgi?id=213582

Saroj
la source
Lorsque les annotations de version sont activées, il vous suffit de passer la souris sur le dossier Projet (ou Fichier ou Favoris) pour voir la branche actuelle.
idclaar
12

Et ça?

{ git symbolic-ref HEAD 2> /dev/null || git rev-parse --short HEAD 2> /dev/null } | sed "s#refs/heads/##"
ShogunPanda
la source
1
Meilleure réponse car il gère bien le boîtier HEAD détaché.
Pat
2
Il semble que vous devriez utiliser () pas {} pour encapsuler les commandes git
Pat
@Pat Il n'est pas nécessaire de générer un sous-shell séparé pour cela, comme le ferait (). {} va bien, sauf que vous devez ajouter un; ou retour à la ligne avant}. En fait, vous pouvez simplement laisser le {} complètement sauf si vous avez besoin de regrouper les commandes.
aij
La symbolic-refpièce ne doit-elle pas également --shortéviter de préfixer le nom de la branche avec refs/heads/?
rjp
11

J'ai un script simple appelé git-cbr( branche actuelle ) qui imprime le nom de la branche actuelle.

#!/bin/bash

git branch | grep -e "^*"

J'ai mis ce script dans un dossier personnalisé ( ~/.bin). Le dossier est dans $PATH.

Alors maintenant, quand je suis dans un dépôt git, je tape simplement git cbrpour imprimer le nom de la branche actuelle.

$ git cbr
* master

Cela fonctionne car la gitcommande prend son premier argument et essaie d'exécuter un script qui porte le nom de git-arg1. Par exemple, git branchessaie d'exécuter un script appelé git-branch, etc.

Diego Pino
la source
11

Vous pouvez configurer de manière permanente votre sortie bash pour afficher votre nom de branche git. C'est très pratique lorsque vous travaillez avec différentes branches, pas besoin de taper $ git statustout le temps. Github repo git-aware-prompt .

Ouvrez votre terminal (ctrl-alt-t) et entrez les commandes

mkdir ~/.bash
cd ~/.bash
git clone git://github.com/jimeh/git-aware-prompt.git

Modifiez votre .bashrc avec la sudo nano ~/.bashrccommande (pour Ubuntu) et ajoutez ce qui suit en haut:

export GITAWAREPROMPT=~/.bash/git-aware-prompt
source "${GITAWAREPROMPT}/main.sh"

Collez ensuite le code

export PS1="\${debian_chroot:+(\$debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ "

à la fin du même fichier dans lequel vous avez collé le code d'installation plus tôt. Cela vous donnera la sortie colorisée:entrez la description de l'image ici

Kirill Zhuravlov
la source
10

La commande shell suivante vous indique la branche dans laquelle vous vous trouvez actuellement.

git branch | grep ^\*

Lorsque vous ne voulez pas taper cette longue commande chaque fois que vous voulez connaître la branche et que vous utilisez Bash, donnez à la commande un alias court, par exemple un alias cb, comme ceci.

alias cb='git branch | grep ^\*'

Lorsque vous êtes dans le maître de branche et que vous y êtes invité $, vous obtenez ce * masterqui suit.

$ cb
* master
mrrusof
la source
Cela ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. - De l'avis
Rashwan L
1
Pourquoi penses-tu ça?
mrrusof
vous devez commenter et décrire votre message pour l'OP, de cette façon, il sera plus facile de comprendre votre message.
Rashwan L
1
C'est parfaitement logique.
mrrusof
1
si vous utilisez zsh, vous devrez git branch | grep '^\*'
encapsuler l'expression
9

Renvoie le nom de la branche ou SHA1 en cas de tête détachée:

git rev-parse --abbrev-ref HEAD | grep -v ^HEAD$ || git rev-parse HEAD

Il s'agit d'une version courte de la réponse de @ dmaestro12 et sans prise en charge des balises.

utilisateur
la source
8
mieux:git symbolic-ref --quiet --short HEAD || git rev-parse --short HEAD
blueyed
8

Si vous voulez vraiment que la dernière branche / étiquette soit extraite dans l'état HEAD détaché également.

git reflog HEAD | grep 'checkout:' | head -1 | rev | cut -d' ' -f1 | rev

Mettre à jour C'est plus agréable si vous avez et n'avez pas peur de awk.

git reflog HEAD | grep 'checkout:' | head -1 | awk '{print $NF}'
Ryan
la source
le rev | cut -d' ' -f1| revpeut être simplifié avecawk '{print $NF}'
Steve Buzonas
1
Bien que cela ne soit pas infaillible non plus, car vous pouvez extraire une révision particulière par hachage, de sorte que le reflog montre simplement que checkout: moving from ba7571b7fc5b8f31b8d0625821269afaa655577e to f68be8cf7bea917a5a0562b619e50368de0068a9c'est toujours une astuce utile qui pourrait aider à lever l'ambiguïté dans certains cas.
Alex Dupuy
1
git reflog | awk '$3=="checkout:" {print $NF; exit}'
Raccourcir encore
6

Je sais que c'est en retard mais sur un linux / mac, à partir du terminal, vous pouvez utiliser ce qui suit.

git status | sed -n 1p

Explication:

git status -> obtient le statut de l'arbre de travail
sed -n 1p -> obtient la première ligne du corps du statut

La réponse à la commande ci-dessus se présente comme suit:

"On branch your_branch_name"
skippy
la source
2
head -1serait la façon habituelle
bukzor
5

vous pouvez également utiliser la variable GIT_BRANCH comme indiqué ici: https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

Le plugin git définit plusieurs variables d'environnement que vous pouvez utiliser dans vos scripts:

GIT_COMMIT - SHA du courant

GIT_BRANCH - Nom de la branche actuellement utilisée, par exemple "master" ou "origin / foo"

GIT_PREVIOUS_COMMIT - SHA de la validation construite précédente de la même branche (la SHA actuelle lors de la première construction dans la branche)

GIT_URL - URL distante du référentiel

GIT_URL_N - URL distantes du référentiel lorsqu'il y a plus de 1 télécommandes, par exemple GIT_URL_1, GIT_URL_2

GIT_AUTHOR_EMAIL - Courriel du contributeur / auteur

GIT_COMMITTER_EMAIL - Courriel du contributeur / auteur

user3405314
la source
5

Ajoutez-le à l' PS1aide de Mac:

PS1='\W@\u >`[ -d .git ] && git branch | grep  ^*|cut -d" " -f2`> $ '

Avant d'exécuter la commande ci-dessus:

entrez la description de l'image ici

Après avoir exécuté cette commande:

entrez la description de l'image ici

Ne vous inquiétez pas, s'il ne s'agit pas d'un référentiel GIT, il n'affichera pas d'erreur en raison de [-d .git]laquelle vérifie si le .gitdossier existe ou non.

Abdennour TOUMI
la source