[iOS 사전캠프] Git: tag & describe

DoyleHWorks·2024년 10월 17일
0

학습 사이트의 아래 레벨에서 다루는 내용이다.

  • A Mixed Bag (4~5) level mixed<num>
    • Git Tags
    • Git Describe

※ Advanced Topics 의 내용은 본글에서 다루지 않지만, 앞에서 배운 내용들을 가지고 풀 수 있는 레벨들이다.

  • Advanced Topics (1~3) level advanced<num>
    • Rebasing over 9000 times
    • Multiple parents
    • Branch Spaghetti

git tag

git tag는 Git에서 특정 커밋에 이름을 붙여 버전이나 릴리스를 식별할 수 있게 해주는 기능이다. 태그는 주로 소프트웨어의 특정 릴리스 지점을 표시하는 데 사용되며, 일반적으로 변경 로그를 관리하거나 배포를 위해 커밋을 추적하는 데 유용하다.

기본 개념

  • 태그 종류:
    • 경량 태그 (Lightweight Tag): 단순히 특정 커밋에 대한 포인터로, 추가적인 메타데이터가 없다.
    • 주석 태그 (Annotated Tag): 태그에 이름, 이메일, 날짜 등의 메타데이터를 포함할 수 있는 태그이다. 주석 태그는 Git의 객체 데이터베이스에 저장되며, 추가 정보를 제공한다.

사용법

// 1. 경량 태그 생성
git tag <tag_name>
// 2. 주석 태그 생성
git tag -a <tag_name>
// 3. 특정 커밋에 태그 추가
git tag (-a) <tag_name> <commit_hash>
// 4. 태그 목록 확인
git tag
// 5. 태그 삭제
git tag -d <tag_name>
// 커밋 해시가 아니라 태그 이름이 기준인 것에 주목
// 각 태그 이름은 고유해야 하며 두 개 이상의 커밋에 같은 이름을 붙일 수 없다.
// 6. 태그 푸시
git push origin <tag_name>

git describe

git describe는 앞뒤로 많은 커밋을 이동했을 때 갈피를 잡게 도와주는 명령어이다. (상황 예시: git bisect (debugging search)를 마친 후, 막 휴가에서 돌아온 동료의 컴퓨터에 앉았을 때)

기본 개념

  • git describe는 최신 태그를 기준으로 커밋의 거리와 커밋 해시의 일부를 조합해 결과를 보여준다.
  • 주로 소프트웨어 버전 관리와 릴리스를 위한 태그를 기반으로 변경 사항을 설명하는 데 유용하다.

사용법

// 기본 명령어
git describe <ref>
// <ref>에 아무런 값도 넣지 않으면 HEAD를 기준으로 결과를 반환한다.
// 결과 형식
<tag_name>-<number_of_commits>-g<commit_hash>
  • 참고로 <commit_hash> 앞의 g는 git을 의미한다.

추가 옵션

  • --tags: 태그가 없는 경우에도 태그를 찾도록 지시한다.
  • 해당 지시가 없으면 git describe는 기본적으로 주석 태그(annotated tag)만 찾는다.
git describe --tags
  • --long: 항상 긴 형식의 결과를 보여준다.
git describe --long
  • --always: 태그가 없는 경우데 커밋 해시를 반환한다.
git describe --always
profile
Reciprocity lies in knowing enough

0개의 댓글