2009-09-13 6 views
215

Ich habe versucht, nach einem speziellen Git-Befehl dafür zu suchen, konnte aber keinen finden. Kann jemand etwas kürzer oder schneller als vorschlagen:Zeige nur den aktuellen Zweig in Git

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

Ich denke, das die schnellste Art und Weise, ist Stromzweig – Eimantas

+0

möglich Duplikat zu erhalten [Wie aktuelle Zweignamen in Git bekommen?] (Http://stackoverflow.com/questions/6245570/how-to- get-current-branch-name-in-git) –

+0

@ChandrayyaGK: Nein, weil die andere Frage darin besteht, es in der IDE zu tun. (Viele der Antworten beziehen sich auf die Verwendung in der Befehlszeile. Es lohnt sich also, einen Blick darauf zu werfen, aber es handelt sich nicht um ein korrektes Duplikat, und diese Antworten sollten stattdessen hier migriert werden, wenn es einen Wert gibt, der bereits vorhanden ist.) – tripleee

Antwort

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

Dies sollte mit Git 1.6.3 oder neuer funktionieren.

+0

funktioniert auch nicht für mich, mit git-1.6.2.5.git rev-parse --abbrev-ref HEAD => --abbrev-ref 311172491a9a667f9321bdf1c4fe5e22cc6e2c08 (dh U-Parse akzeptiert keine --abbrev-ref (nicht in der Manpage entweder)) – JasonWoof

+0

JasonWoof, funktioniert für mich in 1.6 .4.2, muss geändert werden, um zu sehen, wann genau das passiert ist ;-) –

+6

Soweit ich das anhand der Git Logs feststellen kann, wurde diese Funktion in 2009-04-20 zusammengeführt und mit Version 1.6.3 veröffentlicht. – earl

4

ich

bin mit
/etc/bash_completion.d/git 

Es kam mit git und liefert Abschluss eine Aufforderung mit Zweignamen und Argumente.

+0

Wie kann diese Aufforderung aktiviert werden? – Alex

+0

In ubuntu kann '$ source/etc // bash_completion.d/git-prompt' Datei auf verschiedenen Systemen unterschiedlich benannt sein. (Anmerkung: Das 'source' Schlüsselwort ist das gleiche wie nur' .' ​​(Punkt) in bash.) – michael

25

Sie können in der Ausgabe von

git symbolic-ref HEAD 

Insbesondere je nach Ihren Bedürfnissen und das Layout interessiert sein könnten Sie

basename $(git symbolic-ref HEAD) 

oder

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

tun wollen und dann wieder gibt es die .git/HEAD Datei, die auch für Sie interessant sein könnte.

+2

Sie können 'git rev-parse --symbolic-full-name' auf' git symbolic-ref' verkürzen. – earl

+1

Sie müssen nicht 'basename' oder' cut' verwenden; Verwenden Sie 'BR = $ {BR # refs/heads /}' (wobei BR der Name der Variablen ist, die Sie als Ausgabe von 'git symbolic-ref HEAD' gespeichert haben). –

+0

Jakub, natürlich nicht, vorausgesetzt, Sie haben die Ausgabe in Variable. –

6

Dies ist ein alter Thread, über den ich gerade gestolpert bin. Von dem, was ich sagen kann, gibt es keine Möglichkeit zu zeigen, nativ nur die aktuelle Filiale in GIT, so habe ich mit worden:

#> git branch | grep '*' 
+1

Während das mit GNU coreutils funktioniert, ist' grep '*' ' nominell ein Syntaxfehler. Wahrscheinlich willst du 'git branch | sed -n 's/^ \ * // p'' sowieso. Oder eigentlich, was das OP überhaupt gepostet hat, was auf dasselbe hinausläuft. – tripleee

+0

@tripleee können Sie mich darüber aufklären, warum 'grep '*'' nominell ein Syntaxfehler ist? –

+0

Genau wie der Plural * s * im Englischen allein keine sinnvolle Bedeutung hat, kann man nicht "null oder mehrere Male" isoliert ohne etwas davor sagen. (Ich dachte, ich erinnere mich, dass die GNU 'grep'-Dokumentation ausdrücklich erwähnt, dass ein einzelnes' * 'am Anfang der Zeichenkette wörtlich interpretiert wird, dh als '[*]' im allgemeinen Regex, aber ich kann dies jetzt nicht dokumentiert finden.) – tripleee

74

(I Kommentare Antworten nicht hinzufügen können noch so)

in Git 1.8.1 Sie den git symbolisch-ref Befehl mit der "--short" Option verwenden können:

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

Danke. Alias ​​erstellt. –

+3

Besser als die angenommene Antwort IMO, weil es auf Repos mit keine commits funktioniert –

+0

Getting der Fehler 'fatal: ref HEAD ist kein symbolischer Verweis ', wenn dies als Teil eines TravisCI-Build – kmanzana

0

ich denke, das schnell sein soll und kann mit python-API verwendet werden.

git branch --contains HEAD 
* master