2009-09-13 9 views
215

Próbowałem szukać specjalnego polecenia git, ale nie mogłem go znaleźć. Czy ktoś może sugerować coś krótszy lub szybciej niż:Pokaż tylko bieżący oddział w Git

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

myślę, że to jest fastes możliwy sposób, aby uzyskać prąd oddział – Eimantas

+0

możliwy duplikat [Jak uzyskać bieżącą nazwę oddziału w Git?] (Http://stackoverflow.com/questions/6245570/how-to- get-current-branch-name-in-git) –

+0

@ChandrayyaGK: Nie, ponieważ inne pytanie dotyczy robienia tego z poziomu twojego IDE. (Wiele odpowiedzi dotyczy użycia wiersza poleceń, więc warto się przyjrzeć, ale nie jest to odpowiedni duplikat, a te odpowiedzi powinny zostać przeniesione tutaj, jeśli są jakieś, które dodają znaczną wartość do tego, co już jest tutaj.) – tripleee

Odpowiedz

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

Powinno działać z Git 1.6.3 lub nowszym.

+0

Nie działa również dla mnie, z git-1.6.2.5.git rev-parse --abbrev-ref HEAD => --abbrev-ref 311172491a9a667f9321bdf1c4fe5e22cc6e2c08 (np. rev-parse nie akceptuje --abbrev-ref (nie na stronie man)) – JasonWoof

+0

JasonWoof, działa dla mnie w 1.6 .4.2, trzeba zmienić listę, aby zobaczyć, kiedy dokładnie to się stało ;-) –

+6

O ile mogę powiedzieć z dzienników Git, ta funkcja została scalona w 2009-04-20 i została wydana w wersji 1.6.3. – earl

4

Używam

/etc/bash_completion.d/git 

Przyszedł z git i zapewnia wiersz z nazwą oddziału i zakończenia argumentów.

+0

W jaki sposób można włączyć ten monit? – Alex

+0

W Ubuntu, '$ source/etc // bash_completion.d/git-prompt' Plik może mieć różną nazwę na różnych systemach. (Uwaga: słowo kluczowe "źródło" jest takie samo, jak "." (Kropka) w bashu.) – michael

25

Możesz być zainteresowany wyjściu

git symbolic-ref HEAD 

W szczególności, w zależności od potrzeb i układ może chcesz zrobić

basename $(git symbolic-ref HEAD) 

lub

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

a następnie znowu jest plik .git/HEAD, który może być również dla Ciebie interesujący.

+2

Możesz skrócić 'git rev-pars - -symbolic-full-name' do' git symbolic-ref'. – earl

+1

Nie musisz używać 'nazwa-platformy' lub' cut'; użyj 'BR = $ {BR # refs/heads /}' (gdzie BR jest nazwą zmiennej zapisałeś wynik działania 'git symbolic-ref HEAD'). –

+0

Jakub, oczywiście, że nie, pod warunkiem, że masz wyjście w zmiennej. –

6

To jest stary wątek, na którym się natknąłem. Z tego co wiem, nie ma sposobu, aby pokazać natywnie tylko bieżące oddział w GIT, więc używam:

#> git branch | grep '*' 
+1

Podczas gdy to działa z coreutils GNU,' grep '*' 'jest nominalnie błąd składni. Prawdopodobnie chcesz 'git branch | sed -n 's/^ \ * // p'' mimo to. Lub faktycznie, co PO opublikował w pierwszej kolejności, co oznacza to samo. – tripleee

+0

@tripleee czy możesz mnie oświecić, dlaczego 'grep '*'' jest nominalnie błędem składni? –

+0

Podobnie jak liczba mnoga * s * w języku angielskim nie ma żadnego użytecznego znaczenia na własną rękę, nie można powiedzieć "zero lub więcej razy" w izolacji bez czegoś przed nim. (Myślę, że pamiętałem, że dokumentacja GNU 'grep' wspomina konkretnie, że samotny' * 'na początku łańcucha jest interpretowany dosłownie, tj. Jako' [*] 'w ogólnym wyrażeniu regularnym, ale nie mogę znaleźć tego teraz udokumentowanego.) – tripleee

74

(nie mogę dodawać komentarze do odpowiedzi, więc)

w git 1.8.1 można użyć symboliczne-ref polecenie git z opcją „--short”:

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

Dzięki. Utworzono alias. –

+3

Lepsza niż zaakceptowana odpowiedź IMO, ponieważ działa na repo bez zobowiązań –

+0

Uzyskanie błędu 'fatal: ref HEAD nie jest symbolicznym ref' podczas uruchamiania tego jako część TravisCI build – kmanzana

0

Myślę, że to powinno być szybkie i może być używany z Pythona API.

git branch --contains HEAD 
* master