# git describe
---
## 1. Git Describe란?
- `git describe`는 현재 커밋(또는 ref)이 ****가장 가까운 태그****로부터 몇 번째 커밋인지, 어떤 커밋인지 요약해주는 명령어이다.
- 주로 ****버전 관리****, ****릴리즈 스크립트 자동화****, ****디버깅 시 위치 파악**** 등에 활용됨.
---
## 2. 기본 출력 형식
```text
__g
```
항목
설명
``
가장 가까운 태그 이름
``
태그 이후 몇 번째 커밋인지 (0이면 태그 본인)
`g<해시>`
해당 커밋의 Git short hash
---
## 3. 자주 쓰는 옵션
### 3.1 `--tags`
```bash
git describe --tags
```
- 기본 동작은 ****annotated tag****만 검색.
- `--tags`를 붙이면 ****lightweight tag****도 포함하여 검색.
---
### 3.2 `--abbrev=0`
```bash
git describe --abbrev=0
```
- 가장 가까운 태그 이름만 출력하고, 커밋 수나 해시는 생략됨.
- 릴리즈 버전명만 필요할 때 유용.
---
### 3.3 `--exact-match`
```bash
git describe --exact-match
```
- 현재 커밋이 태그와 ****정확히 일치****할 때만 태그 이름을 출력.
- 그렇지 않으면 아무 출력도 하지 않음.
---
## 4. 사용 예시
```bash
git describe # v2.0.0-2-gabc1234
git describe --tags # lightweight 포함
git describe --abbrev=0 # v2.0.0
git describe --exact-match # v2.0.0 (태그된 커밋일 때만)
```
---
## 5. 주의사항
- `git describe`는 기본적으로 ****annotated tag****만 대상으로 함.
- lightweight 태그까지 포함하고 싶으면 `--tags` 옵션 사용.
- ****스크립트/자동화****에서는 보통 `--tags --abbrev=0` 조합 사용.
- 태그가 없는 경우, 결과가 출력되지 않거나 에러 발생 가능성 있음.
---