2013-01-09 9 views
0

git에서 동일한 repo 내에 4 개의 브랜치가 있고 태그를 만들면 해당 브랜치가 모든 브랜치에 존재 하는가 아니면 단일 브랜치에만 존재합니까? GitHub에서는 모든 브랜치에 1.0.0 태그가 있고, 이미 존재하기 때문에 커맨드 라인의 다른 브랜치에 다른 1.0.0 태그를 만들 수 없다고합니다. 태그가 모든 브랜치의 상태를 한 번에 보존합니까? git에서Git에서 태그 달기, 어떻게 작동합니까?

답변

4

는 경량 태그는 단순히 특정이 커밋을 가리키는 고유 한 이름입니다.

도미노 (tag)라는 개념도 있으며, 메시지를 입력하고 잠재적으로 GPG로 서명 할 수 있습니다. 그러나 하루가 끝나면 이들은 여전히 ​​특정 커밋을 가리키고 있습니다.

가벼운 태그는 변경되지 않도록 설계된 점을 제외하고는 분기와 거의 동일하지만 분기가 자주 변경되고 변경됩니다.


경량 태그

단순히 .git/refs/tags/ 디렉토리에있는 파일입니다. 내용은 단일 커밋 ID입니다.

[[email protected] MyProject]$ cat .git/refs/tags/Version-4.9.2 
77035b7a66427662f1096444eeb319ba9ab1080b 
+0

태그는 전체 repo 또는 특정 분기의 스냅 샷 역할을합니까? –

+0

git에서 모든 커밋은 전체 repo의 스냅 샷입니다. 모든 브랜치와 태그는 단순히 커밋을 가리킨다. 그래서 예, 스냅 샷입니다. – gahooa

+1

git을 스냅 샷 간의 차이점을보고 관리 할 수있는 "스냅 샷 관리 시스템"으로 생각하십시오. 후드에서 git에는'blobs','trees','commit'이 있습니다. blob은 파일 내용을 보유합니다. 트리는 특정 blob 및 기타 트리의 간단한 목록입니다. 커밋은 메모, 날짜, 작성자 및 특정 트리 객체 (차례로 다른 blob 및 트리 객체를 가리킴)에 대한 포인터입니다. 그런 식으로 커밋은 그 시점에서 전체 레포 상태의 진정한 스냅 샷입니다. – gahooa

관련 문제