[코드잇] Git 커밋, 브랜치, HEAD의 관계는?

코드잇

여러분 Git에서 커밋, 브랜치, HEAD의 뜻을 아시나요?

보통

- 커밋 : 프로젝트의 각 버전

- 브랜치 : 코드의 관리 흐름

- HEAD : 커밋 히스토리에서 사용자의 현재 위치

이 정도로 추상적으로만 알고 계신 분이 많을 것 같은데요. 사실 이 3가지는 서로 밀접한 관련이 있습니다.

바로 아래 이미지처럼요.

이 그림은 우리가 Git에서 커밋을 해나갈 때의 모습을 그림으로 나타낸 겁니다. 하나씩 설명해드릴게요.

일단 지금 총 3개의 커밋이 있습니다. 각 커밋을 나타내는 박스 안에는 '커밋 아이디'가 써있구요.

그 다음 Git에서 커밋을 하면 자동으로 생성되는 master 브랜치는 가장 최신 커밋을 가리키고 있네요.

여기서 중요한 사실은 우리가 그동안 그냥 '코드 관리 흐름' 정도로 추상적으로만 알고 있던 브랜치가 사실은 이렇게 커밋을 가리키는 존재였다는 점입니다.

그리고 지금 HEAD는 master 브랜치를 가리키고 있습니다.

이렇게 HEAD가 가리키고 있는 브랜치가 우리가 지금 위치한 브랜치인 건데요.

그럼 이 상태에서 또 커밋을 하게되면 어떻게 될까요?

그냥 이렇게 네 번째 커밋이 새로 생기고 master 브랜치는 네 번째 커밋을 가리키게 됩니다. HEAD는 원래처럼 master를 계속 가리키고 있기 때문에 변화가 없구요. 다만, master를 통해서 간접적으로 네 번째 커밋을 새롭게 가리키게 되는 변화가 생기는 겁니다.

커밋, 브랜치, HEAD의 관계 뭔가 생소하지만 이해는 되시죠?

이 3가지의 의미와 관계를 정확히 알아야 Git을 잘 사용할 수 있습니다.

더 자세한 내용은 코드잇에서 살펴보세요~!

코드잇 멤버십 유저가 아니라면, 여기서 확인하세요 :)

코드잇 'Git으로 배운 버전 관리' 더 알아보기 >

코드잇 멤버십 유저라면, 여기서 자세히 확인하세요 :)

코드잇 Git 토픽 > 'Git에서 브랜치 사용하기' 챕터

기업문화 엿볼 때, 더팀스

로그인

/