개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다. 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다.
브랜치 기능의 장점
이렇게 나누어진 브랜치에서는 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있다. 분리된 작업 영역(브랜치)에서 변경된 내용들은 다른 브랜치와 병합(Merge)함으로써 다시 새로운 하나의 브랜치로 모을 수 있다.
이렇게 작업을 진행하게 되면 '작업 단위', 즉 브랜치로 그 작업의 내용들이 모두 기록되기 때문에 문제가 발생했을 때 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워진다.
통합 브랜치 (Integration Branch)
배포될 소스 코드가 기록되는 브랜치.
Github Repository를 생성하게 되면 기본적으로 main 브랜치가 생긴다. (기존 Repository의 경우 master로 되어 있는 곳도 많다.)
해당 프로젝트의 모든 기능이 정상적으로 작동하는 상태의 소스코드가 담겨 있다.
피처 브랜치 (Feature Branch)
기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치.
통합 브랜치로부터 만들어내며, 피처 브랜치에서 하나의 작업이 완료가 되면 다시 통합 브랜치에 병합하는 방식으로 진행된다. 토픽 브랜치라고도 한다.
새로운 브랜치 생성
$ git branch 새로운 브랜치 이름
새로운 브랜치 생성 후 해당 브랜치로 전환
$ git switch -c 새로운 브랜치 이름
$ git checkout -b 새로운 브랜치 이름
브랜치 목록 확인
$ git branch
브랜치 목록과 각 브랜치의 최근 커밋 확인
$ git branch -v
브랜치 삭제
$ git branch -d 삭제할 브랜치 이름
$ git branch -D
(병합하지 않은 브랜치를 강제 삭제)브랜치 전환
$ git switch 브랜치 이름
$ git checkout 브랜치 이름
브랜치 병합
$ git checkout master
$ git merge dev
로그에 모든 브랜치를 그래프로 표현
$ git log --branches --graph --decorate
아직 commit 하지 않은 작업을 스택에 임시로 저장
$ git stash