Domanda Come ottenere il nome attuale del ramo in Git?


Vengo da uno sfondo di Subversion e, quando avevo un ramo, sapevo a cosa stavo lavorando con "Questi file di lavoro puntano a questo ramo".

Ma con Git non sono sicuro quando sto modificando un file in NetBeans o Notepad ++, sia che sia legato al master o ad un altro ramo.

Non ci sono problemi con git in bash, mi dice cosa sto facendo.


1707
2018-06-05 20:13


origine


risposte:


git branch

dovrebbe mostrare tutti i rami locali del tuo repository. Il ramo con stelle è il tuo ramo attuale.


1291
2018-06-05 20:17



git rev-parse --abbrev-ref HEAD

Questo mostrerà il ramo corrente.

Riferimento:


3635
2017-08-27 12:33



Hai anche git symbolic-ref HEAD che mostra il refspec completo.

Per mostrare solo il nome del ramo in Git v1.8 e successive (grazie a Greg per averlo indicato):

$ git symbolic-ref --short HEAD

Su Git v1.7 + puoi anche fare:

$ git rev-parse --abbrev-ref HEAD

Entrambi dovrebbero dare lo stesso nome di ramo se sei su un ramo. Se sei su una testa staccata le risposte sono diverse.

Nota:

Su un client precedente, sembra funzionare:

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

- Darien 26. Mar 2014


399
2017-08-08 15:55



Per il mio riferimento personale (ma potrebbe essere utile ad altri) ho fatto una panoramica delle tecniche più (base della linea di comando) menzionate in questo thread, ognuna applicata a diversi casi d'uso: HEAD è (indicando):

  • filiale locale (master)
  • ramo di monitoraggio remoto, in sincrono con il ramo locale (origine / master allo stesso commit come master)
  • ramo di monitoraggio remoto, non in sincrono con un ramo locale (origine / caratteristica-foo)
  • tag (v1.2.3)
  • testa staccata generale (nessuna delle precedenti)

risultati:

  • git branch | sed -n '/\* /s///p'
    • filiale locale: master
    • ramo di monitoraggio remoto (in sincronizzazione): (detached from origin/master)
    • ramo di monitoraggio remoto (non sincronizzato): (detached from origin/feature-foo)
    • etichetta: (detached from v1.2.3)
    • testa staccata generale: (detached from 285f294)
  • git status | head -1
    • filiale locale: # On branch master
    • ramo di monitoraggio remoto (in sincronizzazione): # HEAD detached at origin/master
    • ramo di monitoraggio remoto (non sincronizzato): # HEAD detached at origin/feature-foo
    • etichetta: # HEAD detached at v1.2.3
    • testa staccata generale: # HEAD detached at 285f294
  • git describe --all
    • filiale locale: heads/master
    • ramo di monitoraggio remoto (in sincronizzazione): heads/master (Nota: non  remotes/origin/master)
    • ramo di monitoraggio remoto (non sincronizzato): remotes/origin/feature-foo
    • etichetta: v1.2.3
    • testa staccata generale: v1.0.6-5-g2393761
  • cat .git/HEAD:
    • filiale locale: ref: refs/heads/master
    • tutti gli altri casi d'uso: SHA del commit corrispondente
  • git rev-parse --abbrev-ref HEAD
    • filiale locale: master
    • tutti gli altri casi d'uso: HEAD
  • git symbolic-ref --short HEAD
    • filiale locale: master
    • tutti gli altri casi d'uso: fatal: ref HEAD is not a symbolic ref

(FYI questo è stato fatto con git versione 1.8.3.1)


167
2017-10-25 08:53



Un'altra alternativa:

git name-rev --name-only HEAD

118
2017-11-02 19:17



Beh, abbastanza semplice, l'ho preso in un solo liner (bash)

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

(credito: Espiazione limitata)

E mentre sono lì, l'unica linea per ottenere il ramo di monitoraggio remoto (se presente)

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

87
2018-04-04 15:20



Puoi semplicemente digitare la riga di comando (console) su Linux, nella directory del repository:

$ git status

e vedrai del testo, tra cui qualcosa di simile a:

...
On branch master
...

il che significa che sei attualmente attivo master ramo. Se stai modificando un file in quel momento e si trova nello stesso repository locale (directory locale contenente i file che sono sotto Git version control management), stai modificando il file in questo ramo.


48
2018-06-05 20:31



git symbolic-ref -q --short HEAD

Lo uso negli script che richiedono il nome attuale del ramo. Ti mostrerà l'attuale breve riferimento simbolico a HEAD, che sarà il nome attuale del tuo ramo.


26
2017-10-02 22:09