영어단어 Branch의 의미로, Git
에서도 크게 다르지 않은 의미를 나타낸다.
대형 프로젝트를 진행할 경우, 여러 개발자들이 모여서 그 역할을 나눠 개발을 진행해야 하므로
main stream인 master(main)branch
를 기준으로 가지를 쳐 내려가
개발자 각자의 개발 영역을 갖고 개발할 수 있게 하는 것이 branch
이다.
기준이 되는 줄기를 master branch
에 checkout 한 후
여기에 각 분기점에 새로운 branch를 생성하여 작업하는 것을 feature branch
라고 한다.
$ git checkout -b feature develop
$ git checkout develop
Switched to branch 'develop'
$ git merge --no --ff feature
* --no --ff 플래그는 feature branch에 존재하는 커밋이력을 모두 합쳐서
하나의 새로운 커밋 객체를 만들어 develop branch에 merge 하는 것
$ git branch -d feature
$ git push origin develop
$ git checkout -b release-1.0 develop
// release 브랜치(release-1.0)를 'develop' 브랜치에서 분기
$ git checkout -b release-1.0 develop
/* ~ 배포 사이클 시작 ~ */
/* release 브랜치에서 배포 가능한 상태가 되면 'master' 브랜치로 이동
$ git switch master(main)
// 'master' 브랜치에 relese-1.0 브랜치를 병합
$ git merge --no-ff relese-1.0
// 병합한 커밋에 release 버전 태그 부여
$ git tag -a 1.0
/* 'relese' 브랜치의 변경 사항을 'develop' 브랜치에도 적용
$ git switch develop
$ git merge --no-ff release-1.0
// -d 옵션: 브랜치 삭제
$ git branch -d relese-1.0
// hotfix 브랜치(hotfix-1.0.1)를 'master' 브랜치에서 분기
$ git checkout -b hotfix-1.0.1 master
/* ~ 버그 긴급 수정 ~ */
// 수정완료 후 'master' 브랜치로 이동
$ git switch master(main)
// 'master' 브랜치에 'hotfix' 브랜치 병합
$ git merge --no-ff hotfix-1.0.1
// 병합한 커밋에 새로운 버전의 이름으로 태그 부여
$ git tag -a 1.0.1
/* 'hotfix' 브랜치의 변경사항을 'develop' 브랜치에도 적용(병합)
$ git switch develop
$ git merge --no-ff hotfix-1.0.1
- 브랜치 생성
$ git branch [생성할 브랜치명] [분기할 브랜치명]
$ git checkout -b [생성할 브랜치명] [분기할 브랜치명]
* 브랜치 생성 후 바로 이동- 브랜치 삭제
$ git branch -d [삭제할 브랜치명]
- 브랜치명 변경
$ git branch -m [변경할 브랜치명] [새로운 브랜치명]
- 브랜치 이동
$ git switch [이동할 브랜치명]
- 브랜치 확인
$ git branch
$ git branch -v
: 등록된 브랜치의 상세정보 확인
$ git branch --merged
: 병합한 브랜치 목록 확인
$ git branch --no-merged
: 병합하지 않은 브랜치 목록 확인- 브랜치 병합
$ git merge [병합할 브랜치명]
* 병합이 될 브랜치로 switch 후 진행