Git 공부

Git Branch란?

daisy0461 2024. 4. 24. 22:46

이전에 블로그 포스팅들을 보면 commit 이후 git log를 살펴봤을 때 해당 commit을은 숫자와 문자가 조합된 Hash를 가지고 있었다. 해당 해쉬는 그 이전에 있는 부모 commit을 하나 참조한다.

노란색이 Hash이고 "Add Titles plus outline"의 해쉬는 이전의 commit인 "Add Images"의 해쉬를 참조한다는 의미이다.

 

이것으로  commit이 다음 commit으로 연결되고 다음 commit으로 연결되는 형식이며 직선형이라는 것을 알 수 있다.

 

하지만 실제 프로젝트를 할 땐 많은 사람들과 작업을 진행하게 된다.

위와 같이 직선형으로 일을 진행하면 결국 1명만 일을 할 수 있다는 의미가 된다.

그리고 여러 사람이서 작업을 하게 된다면 서로 코드를 삭제하거나 파일을 지우는 일이 발생해서 엉킬 위험이 있다.

 

 

 

위와 같은 위험을 벗어나 작업을 할 수 있도록 하는 것이 Branch이다.

 

Branch

Branch는 Git의 가장 특징적인 기능이고 프로젝트에서 타임라인 같은 것이라고 생각가능하다.

원할 때 새로운 context를 생성하고 새로운 것을 시도할 수 있으며 수정, 삭제가 가능하다.

특이한 점은 Branch에서 어떤 작업을 진행하든 다른 Branch에는 영향을 미치지 않는다.

간단하게 Branch라는 이름에서 알 수 있듯이 나뭇가지라고 생각하면 된다.

master은 기둥이고 Branch라는 장소에서 master에 영향을 주지 않고 작업이 가능하다. 또한 나뭇가지에 또 다른 잔가지가 있듯 Branch에서 또 다른 Branch도 생성이 가능하다.

 

우린 Branch를 분명히 본 적이 있다.

git status를 실행시키면 따로 Branch를 생성하지 않았음에도 "On branch master"라고 뜬다.

여기에 On branch master에서 확인할 수 있는건 현재 내가 있는 Branch가 master라는 것이다.

이후에 Branch를 변경하면 해당 Text가 바뀔것이다.

 

 

그리고 HEAD -> master이건 무엇일까?

이 문구는 가장 최근 Commit에서 볼 수 있다.

HEAD는 Git 용어 중 하나고 Repo에서 현재 위치를 나타낸다. 우리가 보거나 확인하고 있는 현재 위치를 나타낸다.

HEAD는 더 간단하게 현재 속해있는 Branch를 가르킨다.

master branch에서 HEAD는 master branch를 나타내고 master는 가장 최근에 실시한 commit을 가르킨다.

branch를 옮기면 HEAD 해당 bracnch를 가르키고 branch는 가장 최근에 실시한 commit을 가르킨다.

HEAD -> branch -> 최근 commit (hash를 통해 알 수 있음)

Master Branch

Master Branch는 git init을 실행했을 때 생기는 기본 Branch 이름이며 자동적으로 시작하는 Branch이다.

특별한 점이 있는가? 하면 딱히 없다. 그냥 Default로 만들어진다는 점을 제외하면 Branch와 동일하다.

물론 프로젝트마다 코드 베이스나 프로젝트의 공식 Branch처럼 사용할 순 있다. Git의 관으론 일반 Branch와 동일하다.

 

특이한 점은 Git hub에서는 master가 아니라 main으로 나타날 것이다. 이건 TMI이긴한데 2020년에 Git hub에서 기본 Branch명을 master에서 main으로 바꿨기 때문이다.