Appia의 IT세상

[깃, Git] git branch(깃 브랜치)와 HEAD(헤드)란? 본문

IT_OS_ETC../[OS]Windows10&11

[깃, Git] git branch(깃 브랜치)와 HEAD(헤드)란?

Appia 2023. 11. 19. 07:00
반응형

[깃, Git] git branch(깃 브랜치)와 HEAD(헤드)란?

[깃, Git] git branch(깃 브랜치)와 HEAD(헤드)란?

 

이전 포스팅까지는 매우 기본적인 내용들인 Git Commit에 관련된 내용들과 그에 추가된 GUI 및 환경설정을 하는 부분에 집중적으로 다루었습니다. 앞선 부분에 대해서는 매우 기본적인 부분이었습니다. 이제부터는 조금 심도 있는 내용에 대해서 이야기를 해보고자 합니다. 그래서 이번 포스팅에서는 이제 또다른 git의 핵심 내용인 branch(브랜치)에 대해서 이야기를 해보고자 합니다. branch(브랜치)와 함께 HEAD에 대해서도 함께 이야기를 해보고자 합니다. 

[깃, Git] Git Commit 개념 및 Workflow(깃 커밋 워크플로우)

 

[깃, Git] Git Commit 개념 및 Workflow(깃 커밋 워크플로우)

[깃, Git] Git Commit 개념 및 Workflow(깃 커밋 워크플로우) 이전 포스팅에서는 Git에 대한 기본적인 개요 및 github등과의 차이점에 대해서 이야기를 해봤습니다. 그러면, 이제 흔히들 이야기 하는 commit

appia.tistory.com

 

1. branch(브랜치)란? 

먼저, git을 통해서 다양한 작업을 하다보면, 많은 시간순으로 commit들이 이루어질 것입니다. 저는 branch(브랜치)을 흐름이라고 이야기를 하겠습니다. 이 흐름은 여러개가 될 수 있습니다.  

조금 더 쉬운 이해를 위해서, 간단한 예로 책을 쓰는 작업을 한다고 가정을 하겠습니다. 처음에 개요를 짜고, 등장인물을 구성하였습니다. 그리고나서, 1장 작성을 완료했습니다. 이 과정에서, 2장에서 약간의 실험을 해보고 싶은 작가는 현재의 흐름을 기준으로 별도의 흐름을 생성합니다. (즉, branch을 만듭니다.) 그리고 나서, 원래의 계획과 다르게 시험적인 요소가 가미된 2장을 작성을 합니다. 그리고나서, 다시 본래의 흐름으로 돌아와, 최초에 생각했던 대로, 2장을 작성합니다. 

branch(브랜치)란?

그런데 작가가 3장 4장에 대해서 공동작업을 진행해야 합니다.  3장, 4장은 외부 작가가 작업을 하도록 하고 본 작가는 5장 작업을 병행으로 진행합니다. 이 때도 외부 작가의 작업을 위한 별도의 흐름을 생성합니다.(즉, branch을 만듭니다.) 그리고, 3장 4장 작업을 진행합니다. 1장, 2장 작업을 한 작가는 5작업을 합니다. 그리고 나서, 이 부분을 병합합니다. 

이와 같은 각 흐름이라고 지칭한 branch(브랜치)는 다수의 인원이 병행작업을 가능하게 해줍니다. 또한 시험적인 요소를 시도할 수 있게 해줍니다. 이러한 부분이 가능하게 해주는 git(깃)의 핵심적인 기능이 branch(브랜치)입니다.. 

 

2. HEAD란?

그럼 여기에서 HEAD에 대해서도 살펴보도록 하겠습니다.  먼저, 다음 화면은 git log의 결과입니다. 앞서서 포스팅한 바와 같이 commit에 대한 정보를 출력합니다. HEAD는 branch(브랜치) 래퍼런스를 가리킵니다. branch(브랜치) 래퍼런스란 현재 어떠한 branch(브랜치)에 있는지 표시를 해줍니다. 즉 화살표 이후에 있는 부분(하위 화면에서는 master)에 있는 branch(브랜치)가 활성화 되어 있다는 것을 나타내줍니다. 

HEAD예시

여기에서 보면, (HEAD ->  master)라는 부분이 있습니다. 이 부분은 Repository에서 현재의 위치를 가리키는 포인터입니다.  HEAD의 경우 해당 branch (브랜치)에서 가장 마지막 commit된 위치를 가리킵니다. 

그러면 다음 그림에서 살펴보겠습니다. 그러면 하기와 같이 노란색 화살표는 녹색 branch(브랜치)에서 HEAD을 나타냅니다. 

HEAD 예시 1.

그러면 만약 빨간색 branch(브랜치)로 변경하였다면 현재 노란색 HEAD 또한 다음 보이는 부분과 같이 변경이 될 것입니다. 

HEAD 예시2.

이와 같은 의미로 HEAD를 나타낼 수 있습니다. 그러면 제가 간단한 예로 브랜치를 바꿔보면서, HEAD의 변화를 살펴보겠습니다. 먼저, master 브랜치를 살펴보면, 다음과 같습니다. 현재 commit이 2개 존재합니다. 그보다 HEAD이후에 화살표가 가르키는 부분이 master라는 것을 알 수 있습니다. 

master branch의 commit 상황

이 부분을 red라는 branch(브랜치)로 변경하여 commit된 상황을 살펴보도록 하겠습니다. 앞서 부분과 다른 것을 알 수 있습니다. 

branch변경후 git log 결과

이와 같이 위에서 차이가 발생하는 HEAD값을 볼 수 있습니다. branch(브랜치)를 변경하니, HEAD가 가르키니 부분이 red(변경된 branch)로 변경이 된 것을 알 수 있습니다. 이와 같이 HEAD가 가리키는 branch(브랜치) 래퍼런스가 바뀐것을 알 수 있습니다.

 

[깃, Git] Git의 commit 정보 확인하기 (feat. git log)

 

[깃, Git] Git의 commit 정보 확인하기 (feat. git log)

[깃, Git] Git의 commit 정보 확인하기 (feat. git log) 이전 포스팅에서, git의 기본 편집기을 변경하는 방법에 대해서 대해서 알아봤습니다. 이전 부분을 통해서 commit 메시지가 길거나, 많은 내용을 담아

appia.tistory.com

 

이번 포스팅에서는 [깃, Git] git branch(깃 브랜치)와 HEAD(헤드)란?라는 주제로 포스팅을 진행 했습니다. 이번 포스팅을 통해서 모든 것을 완벽히 이해하기가 어려울 수 있습니다. 이 부분에서 대략적인 개념만 잡으시고, 다음 포스팅을 통해서 실습과 함꼐 이 부분에 대한 개념을 숙지하는 것을 권장합니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments