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

코드잇

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

​

보통

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

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

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

​

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

​

바로 아래 이미지처럼요.

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

​

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

​

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

​

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

​

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

​

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

​

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

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

​

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

​

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

​

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

​

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

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

​

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

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

기업문화 엿볼 때, 더팀스

로그인

/