2009-09-13 15 views
215

Ho provato a cercare uno speciale comando git per questo, ma non sono riuscito a trovarne uno. Qualcuno può suggerire qualcosa di più breve o più veloce di:Mostra solo il ramo corrente in Git

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

penso che questo sia di rapido possibile modo per ottenere ramo corrente – Eimantas

+0

possibile duplicato di [Come arrivare nome del ramo corrente in Git?] (Http://stackoverflow.com/questions/6245570/how-to- get-current-branch-name-in-git) –

+0

@ChandrayyaGK: No, perché l'altra domanda riguarda il farlo dall'interno dell'IDE. (Molte delle risposte sono per l'uso da linea di comando, quindi vale la pena dare un'occhiata, ma non è un duplicato appropriato, e quelle risposte dovrebbero forse essere migrate qui, se ce ne sono che aggiungono un valore significativo a ciò che è già qui.) – tripleee

risposta

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

Questo dovrebbe funzionare con Git 1.6.3 o successivo.

+0

Non funziona neanche per me, con git-1.6.2.5.git rev-parse --abbrev-ref HEAD => --abbrev-ref 311172491a9a667f9321bdf1c4fe5e22cc6e2c08 (cioè rev-parse non accetta --abbrev-ref (neanche nella pagina man)) – JasonWoof

+0

JasonWoof, funziona per me in 1.6 .4.2, ho bisogno di changelog per vedere quando è successo esattamente ;-) –

+6

Per quanto posso dire dai log di Git, questa funzione è stata unita nel 2009-04-20 ed è stata rilasciata con la versione 1.6.3. – earl

4

sto usando

/etc/bash_completion.d/git 

E 'venuto con git e fornisce un prompt con il nome ramo e il completamento argomento.

+0

Come può essere attivato questo prompt? – Alex

+0

In ubuntu, '$ source/etc // bash_completion.d/git-prompt' Il file può essere chiamato diversamente su sistemi diversi. (Nota: la parola chiave 'source' è la stessa di' .' (punto) in bash.) – michael

25

Potreste essere interessati alla produzione di

git symbolic-ref HEAD 

In particolare, a seconda delle esigenze e il layout si potrebbe desiderare di fare

basename $(git symbolic-ref HEAD) 

o

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

e poi di nuovo c'è il file .git/HEAD che potrebbe interessarti anche a te.

+2

Puoi ridurre 'git rev-parse --symbolic-full-name' a' git symbolic-ref'. – earl

+1

Non è necessario utilizzare 'basename' o' cut'; usa 'BR = $ {BR # refs/heads /}' (dove BR è il nome della variabile hai salvato l'output di 'git symbolic-ref HEAD'). –

+0

Jakub, ovviamente no, a patto di avere l'output in variabile. –

6

Questo è un vecchio thread su cui mi sono appena imbattuto. Da quello che posso dire, non v'è alcun modo per nativamente mostrare solo il ramo corrente nel GIT, così ho utilizzato:

#> git branch | grep '*' 
+1

Mentre funziona con coreutils GNU,' grep '*' 'is nominalmente un errore di sintassi. Probabilmente vuoi 'git branch | sed -n 's/^ \ * // p'' comunque. O in realtà, ciò che l'OP ha pubblicato in primo luogo, che equivale alla stessa cosa. – tripleee

+0

@ triple mi puoi illuminare sul perché 'grep' * '' è nominalmente un errore di sintassi? –

+0

Proprio come il plurale * s * in inglese non ha alcun significato utile da solo, non si può dire "zero o più volte" in isolamento senza qualcosa prima di esso. (Pensavo di aver ricordato che la documentazione di GNU 'grep' indica specificamente che un solitario' * 'all'inizio della stringa è interpretato letteralmente, cioè come' [*] 'in generale regex, ma non riesco a trovare questo documento ora.) – tripleee

74

(non posso aggiungere commenti alle risposte ancora, quindi)

in Git 1.8.1 è possibile utilizzare il comando git simbolico-ref con l'opzione "--short":

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

Grazie. Creato alias –

+3

Migliore della risposta accettata IMO, perché funziona su repository senza commit –

+0

Errore fatale: ref HEAD non è un ref simbolico quando eseguirlo come parte di una build TravisCI – kmanzana

0

credo che questo dovrebbe essere veloce e può essere utilizzato con Python API.

git branch --contains HEAD 
* master 
Problemi correlati