Git Branch
- 브랜치(Branch): 하나의 작업을 여럿이 같이 개발할 때, 각 사람이 코드를 통째로 복사한 후 원본이 변경될 우려 없이 독립적으로 개발할수 있게 해주는 개념
- 브랜치의 장점
- 한 소스코드에서 동시에 다양한 작업을 진행함
- 소스코드의 한 시점과 동일한 상태를 만들고, 브랜치를 넘나들며 작업을 수행함
- 각각의 브랜치에서 생긴 변화가 다른 브랜치에 영향을 주지 않고, 독립적으로 코딩을 진행함
- master(또는 main)이라는 이름을 가진 통합 브랜치에 뿌리를 두고, hotfix, release, develop, feature 등 다양한 브랜치를 만들고 작업을 하면, 각각의 브랜치의 작업이 갈라져 나와 아래와 같은 Git graph가 만들어진다
- 이렇게 나누어진 브랜치에서는 각자 독립적인 작업 영역(저장소) 안에서 소스코드를 변경하고, 변경된 내용들은 다른 브랜치와 병합(merge)함으로써 다시 새로운 하나의 브랜치로 모을 수 있음
- 통합 브랜치에서 먼저 자신의 작업 전용 브랜치를 만들고, 각자의 브랜치에서 맡은 영역에 대한 작업을 진행한 후, 작업이 끝난 브랜치는 통합 브랜치에 병합하여 변경 사항을 적용함
- 다른 브랜치의 작업에 영향을 받지 않고 독립적으로 특정 작업을 수행한 뒤 그 결과를 하나로 모으게 됨, 차후 문제가 발생했을 때 원인이 되는 작업을 찾아내거나 대책을 세우기 쉬워짐
- 브랜치 종류
- 통합 브랜치(Intergration Branch)
- 배포될 소스 코드가 기록되는 브랜치
- Github Repository를 생성하게 되면, 기본적으로 main 브랜치가 생성됨
- 해당 프로젝트의 모든 기능이 정상적으로 작동하는 상태의 소스코드를 담는 곳
- 피처 브랜치(Feature Branch)
- 기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치
- 통합 브랜치로부터 만들어내며, 피처에서 하나의 작업이 완료되면 다시 통합으로 병합하는 방식으로 진행함, 토픽 브랜치라고도 함
브랜치 명령어
- 새로운 브랜치 생성
- 새로운 브랜치 생성 후 해당 브랜치로 전환
- $ git switch -c 새로운 브랜치 이름
- $ git checkout -b 새로운 브랜치 이름
- 브랜치 목록 확인
- 브랜치 목록과 각 브랜치의 최근 커밋 확인
- 브랜치 삭제
- $ git branch -d 삭제할 브랜치 이름
- $ git branch -D 해당 명령어는 병합하지 않은 브랜치를 강제 삭제하는 방법
- 브랜치 전환
- $ git switch 브랜치 이름
- $ git checkout 브랜치 이름
- 브랜치 병합 (master 브랜치로 dev 브랜치를 병합할 때 (master ← dev))
- $ git checkout master
- $ git merge dev
- 로그에 모든 브랜치를 그래프로 표현
- $ git log --branches --graph --decorate
- 아직 commit 하지 않은 작업을 스택에 임시로 저장
브랜치 설명 정리
- master/main: 항상 최신의 안정적인 프로그램
- dev: 베타 버전, 모든 개발 로그가 쌓이는 곳, 새로운 feature 기능들이 완성되고 머지되는 곳
- feature: 기능을 추가할 때 마다, 새로 따는 브랜치
- hotfix: 급한 수정을 할때에 새로 따는 브랜치
- release: 배포할 때 쓰는 테스트용 브랜치