오픈소스SW

오픈소스SW_Chapter10_배포관리와 태그

강용민 2022. 12. 7. 00:28

태그

배포는 정리된 최종 결과물을 만드는 과정이며, 깃은 정리된 커밋을 배포할 수 있도록 특수한 포인터를 제공하는데 이를 태그(tag)라 한다.태그 포인터로 최종 배포한의 커밋을 구별할 수 있으며, 커밋 해시 값을 기준으로 생성된다. 당연히 중복 생성은 불가하다.

태그는 다음과 같이 사용한다.

  • git tag [옵션] [버전]
    • -l , --list : 태그 목록을 볼 수 있다.
    • -a : Annotated
    • -d : 태그 삭제
      • 해당 커밋이 삭제되는 것이 아니라 태그만 삭제됨. 당연히 해당 태그는 재사용할 수 있다.

 

태그는 추가 정보를 보유하는지 여부에 따라 두가지로 구분할 수 있다.

  • Annotated 
    • Annotated 태그를 생성하려면 tag 명령어 뒤에 -a 옵션을 사용한다.
    • 일반적으로 사용하는 태그 방법으로, 커밋 해시 값 뿐 아니라 생성자 정보를 추가로 넣을 수 있다.
    • 태크 버전 뒤에 커밋ID를 지정하면 지정된 커밋 해시 값을 기준으로 새로운 태그를 생성한다.
  • Lightweight
    • 버전 이름만 포함

태그 상세 정보 확인

tag 명령어는 태그의 목록만 출력할 뿐 상세 정보는 표시하지 않는다. 태그의 상세 정보를 확인하려면 다음의 명령어를 사용해야 한다.

  • git show 태그이름

 

태그를 사용한 체크아웃

태그는 특정 커밋을 가리키는 포인터이며 태그를 사용하여 특정 커밋으로 체크아웃할 수 있다. 명령어는 다음과 같다.

  • git checkout 태그이름

 

태그 공유

태그를 원격저장소에도 전송할 수 있다. push 명령어를 사용해 브랜치 이름 대신 태그 이름을 이름을 입력하면 된다.

  • git push 서버이름 태그이름 [옵션]
    • --tags : 로컬 저장소의 모든 태그를 한꺼번에 원격 저장소로 보낼 수 있다.
    • --delete : 원격 저장소의 지정된 태그이름을 삭제한다.
    • :[원격저장소태그이름] : 로컬 저장소의 태그를 원격저장소의 태그 이름으로 전송

 

문제

태그 리스트를 보려면 어떤 명령어를 사용하는가

git tag -l

 

태그를 삭제하려면 어떤 명령어를 사용하는가

git tag -d 태그이름

 

태그 등록방식은 2가지가 있다. 어떤것들이 있는가??

annotated와 lightweight가 있다. 각각의 방식은 다음과 같다.

  • Annotated : 이름 외에도 커밋 해시값 뿐 아니라 생성자 정보를 추가로 넣을 수 있다.
    • git tag -a 태그이름
  • Lightweight : 커밋의 체크섬만 가지고 있음
    • git tag 태그이름

 

태그 상세 정보를 보려면 어떤 명령어를 사용하는가

git show 태그이름

 

특정 커밋에 태그를 붙히려면 어떤 명령어를 사용하는가

git tag -a 태그명 커밋ID

 

태그로 특정 커밋ID로 checkout을 할 수 있는가? 아니라면 이유는 무엇인가

가능하다. git checkout 태그로 할 수 있다. 각 태그는 특정 커밋을 가리키고 있는 포인터이기 때문이다.

 

모든 태그를 원격 저장소와 동기화를 하려면 어떤 명령어를 사용하는가

git push 원격 저장소 별칭 --tags

 

원격 저장소에 있는 태그를 삭제하려면 어떤 명령어를 사용하는가

git push --delete 원격 저장소 별칭 태그이름

원격 저장소에 있는 태그를 삭제했다면 로컬 저장소에 있는 태그도 같이 삭제해줘야 한다. 그를 위해서 'git tag -d 태그이름'을 사용할 수 있다.

 

로컬 저장소에선 1.0.0 이였던 태그를 원격 저장소에서 2.0.0태그로 저장하기 위해서는 어떤 명령어를 사용하는가??

git push 원격저장소별칭 태그이름: 원격 저장소 태그 이름