HEAD, master, origin의 자식 개념은 무엇입니까?


197

git에 대해 배우면서 HEAD, master, origin이라는 용어를 계속 사용하고 있으며 차이점이 무엇인지 잘 모르겠습니다. 올바르게 이해하면 HEAD가 항상 최신 개정과 동일합니까? 그렇다면 전체 리포지토리 또는 특정 분기 또는 태그의 최신 버전입니까? 너무 혼란 스럽습니다. 나는 이것과 분기 / 병합과 같은 것들에 대한 많은 자습서를 읽었지만 여전히 내 머리를 감쌀 수는 없습니다.

답변:


232

Scott Chacon의 "Pro Git" 책을 강력히 추천합니다 . 실제 git repo를 탐색하면서 시간을 들여 실제로 읽으십시오.

HEAD : 현재 repo가 ​​커밋되었습니다. 대부분의 시간 HEAD은 현재 지점의 최신 커밋을 가리 키지 만 반드시 그럴 필요는 없습니다. HEAD"저의 레포가 현재 무엇을 가리키고 있는지"를 의미합니다.

커밋이 HEAD참조하는 것이 분기의 팁이 아닌 경우이를 "분리 된 헤드"라고합니다.

master : 처음으로 repo를 만들 때 git이 생성하는 기본 분기의 이름입니다. 대부분의 경우 "마스터"는 "본점"을 의미합니다. 대부분의 상점에는 모든 사람이 마스터하도록 추진하고 있으며 마스터는 레포의 결정적인 견해로 간주됩니다. 그러나 릴리스 브랜치를 릴리스하기 위해 마스터로 만드는 것도 일반적입니다. 로컬 리포에는 자체 리포지토리가 있으며 거의 ​​항상 원격 리포지토리의 마스터를 따릅니다.

origin : git이 기본 원격 저장소에 제공하는 기본 이름입니다. 귀하의 상자에는 자체 저장소가 있으며 귀하와 모든 동료가 추진하는 원격 저장소로 밀어 낼 가능성이 높습니다. 그 원격 저장소는 거의 항상 원점이라고하지만 반드시 그럴 필요는 없습니다.

HEADgit의 공식 개념입니다. HEAD항상 잘 정의 된 의미를 갖습니다. master그리고 origin일반적으로 자식에 사용되는 일반적인 이름은, 그러나 그들은 될 필요가 없습니다.


"HEAD는 실제로"내 레포가 현재 무엇을 가리키고 있는지 "를 의미합니다." 저장소에 여러 분기가있는 경우 어떤 분기가 HEAD입니까? 분기와 함께 3 개의 분기가 있고 분기 A에서 커밋이 필요한 경우 HEAD는 여전히 '마스터'의 커밋에있을 수 있습니다. 그렇다면 레포가 지금 가리키는 개정판은 무엇입니까?
OK999

2
repo (로컬 또는 원격)의 의미를 명확하지 않습니다. 일반적으로 답은 표현을 설명하지 않고 표현을 사용합니다.

방금 작업 디렉토리를 원격 저장소의 팁과 비교하기 위해 병렬 디렉토리에서 복제를 수행했습니다. 이것은 모든 자식 답변이 얼마나 좋은지입니다.

@JingHe 책 전체를 읽었습니까? 정말 가치가 있습니까? 나는 우리가 500 페이지를 읽어 괴물에 대해 얘기 의미, 즉 ... 나에게 조금 너무 많이 보인다
최대

1
논리를 이해하고 있는지 확인하기 위해 featureA로 원격의 분기를 호출 할 수 있으며 해당 분기로 푸시 할 때 "git push origin featureA"를 입력합니다. "git pull origin featureA"라고 말하면 리모컨에서 동일하게 잡아 당길 수 있습니다. head는 로컬 사본 만 참조합니다. @ OK999 나는 HEAD가 현지에서 현재 체크 아웃 한 지점을 가리키고 있다고 생각합니다. 커밋이 branchA에서 이루어졌지만 현재 당신이 branchB에 있다면 HEAD는 branchB를 가리키고 있습니다. 특정 커밋을 수행하기 전에 HEAD를 branchA로 다시 이동해야합니다.
TLee

43

HEAD최신 개정판이 아니라 현재 개정판입니다. 일반적으로 현재 분기의 최신 버전이지만 반드시 그럴 필요는 없습니다.

master 는 메인 브랜치에 일반적으로 부여되는 이름이지만 다른 이름으로 불릴 수도 있습니다 (또는 메인 브랜치가 없을 수도 있음).

origin기본 리모컨에 일반적으로 부여되는 이름입니다. remote는 다른 저장소에서 끌어 올 수있는 저장소입니다. 일반적으로 github와 같은 일부 서버에 있습니다.


1
HEAD가 최신이지만 최신이 아닌 예를들 수 있습니까? 나는 전에 그것을 본 적이 없다. 아니면 지점이 추적하는 원격 지점 뒤에 있기 때문에 최신이 아닐 수 있습니까?
매트 그리어

12
@MattGreer : 이전과 같은 태그 (예 : 같은 태그 git checkout v1.1)를 체크 아웃하면 HEAD가 해당 태그의 커밋으로 변경됩니다. 최신 커밋이 아닐 수도 있습니다.
Greg Hewgill

8

이 질문에 직접 대답하지는 않지만 ProGit 이라는 기본 사항을 배우는 데 도움이되는 훌륭한 책이 무료로 제공됩니다 . 죽은 나무 버전을 비트 모음보다 선호하려면 Amazon 에서 구입할 수 있습니다 .


9
질문은 책을 요구하지 않았습니다! C ++ 용으로 필요하지 않은 경우 왜 git 용 책이 필요한지 여전히 명확하지 않습니다.

13
C ++에 대한 책이 필요 없다고 생각합니다.;)
Piotr Perak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.