Git의 현재 지점 만 표시


356

나는 이것을 위해 특별한 Git 명령을 찾으려고 시도했지만 찾을 수 없었다. 다음보다 짧거나 빠른 것이 있습니까?

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

1
나는이 현재 지점 얻을 수있는 fastes 가능한 방법이라고 생각
Eimantas


@ChandrayyaGK : 아니요. 다른 질문은 IDE 내에서 수행하는 것에 관한 것입니다. (대부분의 대답은 명령 줄 사용법에 대한 것이므로 살펴볼 가치가 있지만 적절한 복제본은 아니며 이미 존재하는 것에 중요한 가치를 부여하는 것이 있다면 대신 대답을 마이그레이션해야합니다.)
tripleee

3
@Torek-여기 Git이 어렵게 만든 또 다른 간단한 작업이 있습니다.
jww

@ChandrayyaGK가 게시 한 링크의 최상위 답변은 이보다 훨씬 느립니다!
Colm Bhandal

답변:


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

이것은 Git 1.6.3 이상에서 작동합니다.


git-1.6.2.5와 함께 저에게도 효과가 없습니다. git rev-parse --abbrev-ref HEAD => --abbrev-ref 311172491a9a667f9321bdf1c4fe5e22cc6e2c08 (즉, rev-parse는 --abbrev-ref (Man 페이지에 없음)를 허용하지 않습니다)
JasonWoof

1
JasonWoof, 1.6.4.2에서 나를 위해 일하고, 정확히 언제 발생했는지 확인하려면 changelog가 필요합니다. ;-)
Michael Krelin-hacker

7
Git 로그에서 알 수있는 한이 기능은 2009-04-20에 병합되었으며 버전 1.6.3과 함께 릴리스되었습니다.

1
나는 또한 그것을 이해하고 싶습니다. 실제로 어떻게 작동합니까? 또한 --abbrev-ref는 다른 인수에 대해 아무것도 반환하지 않는 것처럼 보입니다. HEAD를 인수로 사용할 수는 없습니다.
Setafire

6
분리 된 기호 참조에있는 경우 (지점에 있지만 이전 커밋을 체크 아웃했음을 의미 할 수 있음)이 명령은 HEAD예상하지 않은을 반환합니다 .master
unifreak

129

Git 1.8.1에서는 git symbolic-ref 명령을 "--short"옵션과 함께 사용할 수 있습니다 :

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

감사. 별칭이 생성되었습니다.
Michael Burr

7
커밋없이 repos에서 작동하기 때문에 허용 된 답변 IMO보다 낫습니다.
Jerome Dalbert

2
오류 얻기 fatal: ref HEAD is not a symbolic refTravisCI 빌드의 일부로이 실행
kmanzana

GIT 1.9.1에서 작동하지 않았다```자식 버전 1.9.1 치명적인 : 심판 HEAD는 상징적 심판```아니다
리처드

나를 위해 작동 : 자식 버전 2.16.2.windows.1
Tagc

59

Git 2.22 (2019 년 2 분기)를 사용하면 더 간단한 접근 방식이 있습니다 git branch --show-current.

Daniels Umanovskis ( )의 commit 0ecb1fc (2018 년 10 월 25 일)를 참조하십시오 . ( Junio ​​C Hamano의해 병합 - 커밋 3710f60 , 2019 년 3 월 07 일)umanovskis
gitster

branch: --show-current디스플레이 옵션 소개

호출 할 때 --show-current, git branch현재 지점의 이름을 인쇄하고 종료합니다.
없이 실제 이름 만 인쇄됩니다 refs/heads.
분리 된 HEAD 상태에서는 아무것도 출력되지 않습니다.

스크립팅 및 대화 형 / 정보 용으로 사용됩니다.
와 달리 git branch --list, 분기 이름을 얻기 위해 필터링이 필요하지 않습니다.


15
마지막으로, 처음부터 거기에 있었던 것처럼 보이는 것이 추가되었습니다!
dtasev

27

당신은 출력에 관심이있을 수 있습니다

git symbolic-ref HEAD

특히, 필요와 레이아웃에 따라하고 싶을 수도 있습니다

basename $(git symbolic-ref HEAD)

또는

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

그리고 다시 .git/HEAD당신에게 관심을 가질만한 파일이 있습니다.


2
을 (를) 단축 git rev-parse --symbolic-full-name할 수 있습니다 git symbolic-ref.

1
당신은 사용할 필요가 없습니다 basename또는 cut; 사용 BR=${BR#refs/heads/}(BR 변수의 이름입니다 당신의 출력을 저장 git symbolic-ref HEAD).
Jakub Narębski

물론 Jakub은 출력이 변수로 제공되는 경우에는 아닙니다.
Michael Krelin-해커

5
할 수 git symbolic-ref --short HEAD있습니다
Fahad Siddiqui

2
분기 이름에 슬래시 ( "task / foo", "feature / bar")가 있으면 중단됩니다. 동료들이 슬래시가 멋지다고 결정했을 때 많은
빌드 스크립트

13

내가 말할 수있는 것부터 Git의 현재 분기만을 기본적으로 표시 할 수있는 방법이 없으므로 다음을 사용하고 있습니다.

git branch | grep '*'

3
그것이 GNU coreutils와 함께 작동하는 동안 grep '*'명목상 구문 오류입니다. git branch | sed -n 's/^\* //p'어쨌든 원할 것입니다. 또는 실제로 OP가 처음에 게시 한 내용은 동일한 것입니다.
tripleee

@tripleee grep '*'명목상 구문 오류가 왜 발생 했는지 알려주 시겠습니까?
JK ABC

1
@JKABC : @tripleee의 의미는 '*'정규 표현식이므로 유효하지 않습니다. 아마도 "0 번 이상 연산자"대신 '[*]'문자 를 사용하고 싶을 것입니다 *.
johndodo

2
@ johndodo 설명 해 주셔서 감사합니다. 지금 이해가됩니다. 나는 보통 다음과 같이한다grep '\*'
JK ABC

2
만에 분기 이름을 줄일 수git branch | grep "*" | cut -d' ' -f2
파하드 시디키

6

나는 이것이 빠르며 파이썬 API와 함께 사용할 수 있다고 생각합니다.

git branch --contains HEAD
* master

4
현재 분기를 출력하지 않습니다. 커밋 HEAD가 가리키는 지점 목록을 출력합니다. 그렇습니다. 중복 될 수 있지만 오해로 이어질 수 있습니다. 현재 위치에서 새 브랜치를 작성하고 두 개의 브랜치 라인을 재 시도하십시오. 질문은 " 현재 지점 만 "을 묻습니다 .
RomainValeri

4

나는 사용하고있다

/etc/bash_completion.d/git

Git과 함께 제공되며 브랜치 이름과 인수 완료와 함께 프롬프트를 제공합니다.


이 프롬프트는 어떻게 활성화 할 수 있습니까?
Alex

우분투에서 $ source /etc//bash_completion.d/git-prompt 파일은 다른 시스템에서 다르게 명명 될 수 있습니다. (참고 : source키워드는 .bash의 (점) 과 동일 합니다.)
michael

1

이것은 짧지는 않지만 분리 된 분기를 처리합니다.

git branch | awk -v FS=' ' '/\*/{print $NF}' | sed 's|[()]||g'

1

완성도 echo $(__git_ps1)를 높이려면 Linux에서 최소한 괄호로 묶인 현재 분기의 이름을 제공해야합니다.

이것은 현재 브랜치를 표시하도록 Bash 명령 프롬프트를 설정 하는 데 Git 명령이 아닌 Git 명령이 아니기 때문에 일부 시나리오에서 유용 할 수 있습니다 .

예를 들면 다음과 같습니다.

/mnt/c/git/ConsoleApp1 (test-branch)> echo $(__git_ps1)
(test-branch)
/mnt/c/git/ConsoleApp1 (test-branch)> git checkout master
Switched to branch 'master'
/mnt/c/git/ConsoleApp1 (master)> echo $(__git_ps1)
(master)
/mnt/c/git/ConsoleApp1 (master)> cd ..
/mnt/c/git> echo $(__git_ps1)

/mnt/c/git>

항목은 별명이며 대화식 쉘 스크립트에 있어야합니다. 아마도 모든 종류의 스크립트에는 없습니다.
Alexander Stohr

0

누군가이 ( )가 도움 이 될 수 있습니다. 현재 분기는 * 표시와 함께 표시됩니다.git show-branch --current

host-78-65-229-191:idp-mobileid user-1$ git show-branch --current
! [CICD-1283-pipeline-in-shared-libraries] feat(CICD-1283): Use latest version of custom release plugin.
 * [master] Merge pull request #12 in CORES/idp-mobileid from feature/fix-schema-name to master
--
+  [CICD-1283-pipeline-in-shared-libraries] feat(CICD-1283): Use latest version of custom release plugin.
+  [CICD-1283-pipeline-in-shared-libraries^] feat(CICD-1283): Used the renamed AWS pipeline.
+  [CICD-1283-pipeline-in-shared-libraries~2] feat(CICD-1283): Point to feature branches of shared libraries.
-- [master] Merge pull request #12 in CORES/idp-mobileid from feature/fix-schema-name to master
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.