본문 바로가기
Git

[Git] git branch 개념과 사용법(7)

by 아마도개발자 2023. 12. 1.

 

개발을 하다 보면 코드를 복사해 놓은 뒤에 개발을 해야 하는 일이 자주 생긴다. 코드를 복사한 뒤, 원래 코드와는 독립적으로 개발을 할 수 있는데, 이렇게 독립적으로 개발하는 줄기가 되는 것이 브랜치다. 모든 버전관리 시스템은 브랜치를 지원한다. 그 중에서 git의 브랜치는 매우 가벼워 순식간에 브랜치를 새로 만들어 작업할 수 있고, 브랜치 간 이동이 매우 수월하다. 때문에 git은 브랜치를 새로 만들어 작업한 뒤, 다시 merge하는 개발 방식을 권장한다.

 

우선, branch의 기본 동작부터 살펴보자.

 

실습용 레포지토리의 초기 모습이다 현재 master라는 브랜치가 존재하고 있고 HEAD가 51d435e8을 가리키고 있다. (HEAD는 특정 브랜치의 마지막 커밋에 대한 포인터이다) 이 상태에서 새로운 branch를 만들어 보자.

 

$git branch new         # git branch <branch명>

 

 

이렇게 new라는 새로운 브랜치가 생기고 새로 만든 브랜치도 지금 작업하고 있던 마지막 커밋을 가리키는 것을 확인할 수 있다. 현재 master와 new는 모두 같은 시점에 존재하고 있다. 여기서

git checkout으로 new 브랜치로 이동 한 뒤 커밋을 2개 추가해보도록 하겠다.

 

 

new에서 커밋을 2개 더 추가하자 head가 가장 최신 커밋으로 옮겨진 것을 볼 수 있다. new브랜치의 입장에서 봤을 때 master브랜치와 51d435e8커밋까지 공유가 되어 있는 상태이고, 그 이후로 줄기를 뻗어나간 것이다. 이 상태에서 master브랜치로 옮겨가 그래프의 상태를 보겠다.

 

 

현재 마스터의 이장에서 봤을 때, new브랜치는 master와 공유되지 않는 커밋 2가지를 따로 가지고 있는 독자적인 브랜치이므로 하나의 줄기에서 벗어나 다른 줄기를 내뻗은 그래프로 보이게 된다. 실제로 파일 트리를 보면 new에서 추가한 ex5, ex6번 파일이 사라진 것을 볼 수 있다. 

 

브랜치의 줄기를 조금더 직관적으로 보기 위해 master에서 새로운 커밋을 만들어 보겠다.

 

이 그래프를 보면 4번 커밋이후로 new와 master는 서로 독립적인 브랜치라는 것을 알 수 있다. 이러한 여러가지의 브랜치를 만들어서 개별적인 기능의 추가, 협업이 가능해지는 것이다.

 

브랜치와 관련된 명령어들을 알아보는 것으로 마무리 하겠다.

# 브랜치 생성
$git branch <생성하려는 브랜치 명> <분기해 나올 브랜치 명>
$git checkout -b <브랜치명>

# 브랜치 삭제
$git branch -D <브랜치 명>

# 브랜치 명 변경
$git branch -m <이전 브랜치명> <새로운 브랜치명>

# 브랜치 이동
$git switch <브랜치 명>
$git checkout <브랜치 명>