짧은 Git 버전 해시 받기


381

HEADGit에서 짧은 버전의 해시를 얻는 더 확실한 방법이 있습니까?

내가 얻는 것과 동일한 출력을보고 싶습니다.

 git log -n 1 | head -n 1 | sed -e 's/^commit //' | head -c 8

원래 위의 명령을 사용하여 버전 문자열을 생성했지만 훨씬 더 좋습니다.

git describe --tags

0.1.12(태그 된 커밋) 또는 0.1.11-5-g0c85fbc(태그 뒤에 5 개의 커밋 ) 과 같은 문자열을 출력 합니다.


2
파이프로 데이터를 처리하는 데 능숙한 것 같고 git aliases 에 대해 알아야 합니다 . 이 경우 원하는 것에 대한 명령이 있지만 (답변 참조) 결국에는없는 것을 찾을 수 있으며 별칭이 좋습니다.
MatrixFrog

@ MatrixFrog 팁 주셔서 감사합니다! 나는 이미 간단한 git aliases를 가지고 있었지만 지금까지 얼마나 강력한 지 알지 못했습니다. 나는 특히 graphviz 디스플레이를 좋아한다.
Attila O.

1
허. 실행하면 "치명적 : 이름을 찾을 수없고 설명 할 수 없습니다"git describe --tags 라는 메시지가 나타납니다. .
Quinn Comendant

@QuinnComendant 아마 당신이 먼저 --tags일 을 태그해야합니다 . 먼저 태그를 작성 하십시오 . 예 git tag 1.0.0.
Attila O.

답변:


696

이 시도:

git rev-parse --short HEAD

이 명령 git rev-parse은 수많은 다른 작업을 수행 할 수 있으므로 문서를 주의 깊게 살펴보아야합니다 .


4
다음을 수행하여 리버스를 수행하고 짧은 커밋 해시에서 긴 커밋 해시를 얻을 수 있습니다.git rev-parse HEAD
Andy

9
이 명령은 또한 다음과 같은 다른 소스에서 복사하여 붙여 넣은 긴 rev ID 와도 작동합니다 git log. 예 : git rev-parse --short 97dd2ae065771908ee9ae0fa08ccdb58b5a6b18freturns97dd2ae
chiborg

3
그것은 단지 참조와 함께 작동합니다. HEAD, 태그 이름, 분기 이름 또는 일반 해시를 사용할 수 있습니다.
d12frosted

1
경고, 이것은 기본적으로 7 문자 커밋 해시를 반환하지만 gitlab과 같은 많은 곳에서 8 문자를 사용합니다!
masterxilo

3
git rev-parse --short=8 HEADGitLab에서 사용하는 8 자 길이를 얻는 데 사용할 수 있습니다 . 또한 소스core.abbrev 와 같은 명령으로 특정 git repo에 대해 8로 설정할 수도 있습니다git config core.abbrev 8
n8felton

112

원하는 모든 형식으로 할 수 있습니다 --pretty=format:

git log -1 --pretty=format:%h 

70
git log -1 --abbrev-commit

또한 할 것입니다.

git log --abbrev-commit

약어 SHA-1 체크섬과 함께 로그 항목을 나열합니다.


1
두 번째는 내가 찾던 것입니다! 기억하기 쉽고 일상 생활에 유용합니다.
iFreilicht

git log --pretty=oneline와 달리 작동 --oneline합니다. 그렇지 않으면 전체 크기 해시를 인쇄합니다.
sdaau

46

Git 커밋 짧은 버전과 Git 커밋 메시지를 보는 간단한 방법은 다음과 같습니다.

git log --oneline

이것은 속기입니다

git log --pretty=oneline --abbrev-commit

1
--oneline이 최선의 선택입니다
Juan Ignacio Barisich

1
@JuanIgnacioBarisich 가장 좋은 옵션은 볼 정보의 양에 따라 다릅니다. 작성자 또는 날짜와 같은 추가 정보가 필요한 경우 git log --abbrev-commit이 더 나은 옵션입니다. 또한 log --pretty는 기록 할 정보를 선택하는 더 좋은 옵션 일 수 있습니다.
속도

35

정말 간단한 방법은 다음과 같습니다.

git describe --always

1
THX (역사의 태그 곳이 기대를 설명하기 때문에), 하, 자식은 설명 달콤한, 그 주소가 경우 그렇지 않으면 실패합니다
날카로운

8
짧은 해시를 엄격히 원하면 좋지 않습니다. 주석이 달린 태그가있을 수 있기 때문에 해시가 있습니다.
Zitrax

어떤 경우에는 git describe --long도움이 될 수 있습니다. 로부터 문서 : "항상 출력 긴 형식 (태그, 커밋의 수와 커밋 약칭) 는 태그를 일치하더라도 ." [내 강조]
djvg

사용 --long하는 것이 좋지만 때로는 짧은 해시와 때로는 3 개의 항목을 하이픈으로 구분합니다. 요즘 나는 받아 들인 대답을 사용합니다. 과거에는 주석이 달린 태그에 대해 몰랐습니다. 아마도 태그조차 없었을 것입니다!
Steven Shaw

16

짧은 해시와 마지막 주석이있는 브랜치 :

git branch -v

  develop      717c2f9 [ahead 42] blabla
* master       2722bbe [ahead 1] bla

10

다음 설정으로 Git 버전 2.7.4가 있습니다.

git config --global log.abbrevcommit yes
git config --global core.abbrev 8

이제 내가 할 때 :

git log --pretty=oneline

약식 숫자 8 자리의 커밋 ID를 얻습니다.

ed054a38 add project based .gitignore
30a3fa4c add ez version
0a6e9015 add logic for shifting days
af4ab954 add n days ago
...

1
이 코드는 질문에 대답 할 수 있지만 문제를 해결하는 방법과 이유에 대한 추가 컨텍스트를 제공하면 답변의 장기적인 가치가 향상됩니다.
SherylHohman

1
좋은 생각이야 감사합니다, Sheryl
Down the Stream

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.