Branch 란?


'나뭇가지'

영어단어 Branch의 의미로, Git 에서도 크게 다르지 않은 의미를 나타낸다.
대형 프로젝트를 진행할 경우, 여러 개발자들이 모여서 그 역할을 나눠 개발을 진행해야 하므로
main stream인 master(main)branch를 기준으로 가지를 쳐 내려가
개발자 각자의 개발 영역을 갖고 개발할 수 있게 하는 것이 branch 이다.

기준이 되는 줄기를 master branch 에 checkout 한 후
여기에 각 분기점에 새로운 branch를 생성하여 작업하는 것을 feature branch 라고 한다.

Master Branch


  • git init 할 때 자동 생성되는 기본 브랜치
  • 배포할 때 사용되는 브랜치
  • 커밋 시 태그

Develop Branch


  • 다음 출시 버전을 개발하는 통합 브랜치
  • 이 브랜치를 기반으로 개발을 진행, 모든 기능이 정상적으로 동작할 수 있는 상태 유지
  • master branch 로 merge

Feature Branch


  • develop branch 에서 뻗어나온 가지 브랜치
  • 새로운 기능 개발 및 버그 수정이 필요할 때마다 분기(가지치기)
$ git checkout -b feature develop
  • feature branch 이름을 정할 땐 [feature/기능요약]
  • develop branch 로 merge
$ git checkout develop
Switched to branch 'develop'
$ git merge --no --ff feature

* --no --ff 플래그는 feature branch에 존재하는 커밋이력을 모두 합쳐서
하나의 새로운 커밋 객체를 만들어 develop branch에 merge 하는 것

  • feature 브랜치에서 작업이 모두 끝나면 merge 후 브랜치 삭제
$ git branch -d feature
$ git push origin develop

Release Branch


  • develop branch 에서 뻗어나온 가지 브랜치
    $ git checkout -b release-1.0 develop
  • release branch를 만드는 순간 배포 사이클이 시작되며 직접적으로 관련된 작업을 제외하고는
    release branch에 새로운 기능을 추가로 병합하지 않는다.
  • 버그를 수정하거나 새로운 기능을 포함한 상태로 모든 기능이 정상적으로 동작하는지 확인
  • 배포를 위한 최종적인 개발을 수행하여 배포가능한 상태가 되면 master branch에 merge
  • 병합한 커밋에 Release no. tag 추가
  • release branch에서 기능을 점검하며 발견한 수정 사항은 develop branch 에도 merge
  • develop branch 와 master branch 로 merge
  • 다음 버전 배포를 위한 개발작업은 'develop branch'에서 계속 진행한다.
  • release branch naming
    • release-RB_[] , release-[] , release/[]
// 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 Branch


  • 출시한 버전에서 발생한 버그를 수정하는 브랜치
  • master branch에서 분기
  • hitfix branch naming
    • hotfix-[]
// 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

Branch 관리


  • 브랜치 생성
    $ 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 후 진행
profile
엔프피 프론트엔드 개발자 😁

0개의 댓글