🐾 깃 𝗚𝗶𝘁 𝗛𝘂𝗯

Git Branch 종류와 사용법

비타민찌 2022. 7. 23. 12:50
728x90

Branch의 종류와 사용법

 

1. Git Branches

브랜치 생성, 관리, 삭제

git branch 명령은 브랜치의 생성, 관리, 삭제 전과정에 사용되는 명령어입니다.

 

(1) 브랜치 생성 은 다음과 같은 형태입니다.

git branch [브랜치명]

ex>
git branch test1

 

(2) 생성한 브랜치 확인

git branch

* master
  test1

 

master와 생성된 브랜치들의 표시됩니다.

*는 현재 작업 중인 브랜치를 뜻함.

 

(3) 브랜치 이름 변경

-m (또는 --move) 옵션을 사용하면 브랜치 이름을 변경할 수 있습니다.

git branch -m [기존 브랜치명] [변경할 브랜치명]

test2 브랜치를 test3으로 이름변경 해보자. 다음과 같이 입력하면 됩니다.

git branch -m test2 test3

$ git branch -m test1 test
$ git branch

* master
  test

 

(4) 브랜치를 삭제하려면 -d 옵션을 사용합니다.

git branch -d [브랜치명]

 

 

(5) 브랜치 전환

브랜치를 전환하기 위해 git checkout 명령을 사용합니다.

git checkout [브랜치명]

 

 

2. Git Branches 종류

Git Workflow는 수명이 항상 유지되는 메인 브랜치(master, develop)와

일정 기간 동안만 유지되는 보조 브랜치(feature, release, hofix) 총 5개의 브랜치를 사용합니다.

 

<Git Workflow>

A Successful Git brancing model 글에 첨부된 이미지

 

메인 브랜치 (Main Branch)

< main branch>

main 브랜치는 배포 가능한 상태만을 관리하며, 커밋할 때는 태그를 사용해 배포(Release) 번호를 기록합니다. 위의 Workflow를 이용한 협업에서 작업한 결과물을 서브 브랜치가 아닌 main에 바로 올려 버리면 안됩니다.

 

< develop branch >

develop 브랜치는 기능 개발을 위한 feature 브랜치들을 병합하기 위해 사용합니다. 평소에는 이 브랜치를 기반으로 개발을 진행하며, 모든 기능이 추가되고 버그가 수정되어 배포에 문제가 없을 때, master 브랜치에 병합하게 됩니다.

develop 브랜치 생성
$ git branch develop

저장소에 올림
$ git push -u origin develop

 

보조 브랜치 (Supporting Branch)

< feature branch >

 

feature 브랜치는 새로운 기능을 개발하거나 버그를 수정할 필요가 있을 때마다 develop 브랜치로부터 분기합니다.

이 브랜치에서의 작업은 보통 공유할 필요가 없고 그 부분을 맡은 사람만 작업을 하게 되기 때문에 로컬 저장소에서 관리하게 됩니다.

개발이 완료되면 develop 브랜치에 병합하여 다른 사람들과 공유하고, 해당 브랜치는 삭제합니다.

feature/login 브랜치 생성 후 전환
$ git checkout -b feature/login develop

작업 수행 후 develop 브랜치로 이동 후 병합
$ git checkout develop
$ git merge --no-ff feature/login

구현이 끝난 브랜치 삭제 후 저장소에 올림
$ git branch -d feature/login
$ git push origin develop

 

git merge 명령의 --no-ff 옵션은 합치고자 하는 브랜치(feature/login)에 존재하는 모든 커밋 이력을 하나로 합쳐 새로운 커밋을 생성한 후 병합할 수 있도록 합니다. 하나의 기능을 구현할 때 너무 많은 커밋을 남기게 되면, 부모 브랜치와 병합하면서 불필요한 이력이 많아지기 때문에 정리하는 것입니다.

 

< release branch >

release 브랜치는 출시할 버전을 준비하는 브랜치입니다.

배포만을 위한 브랜치를 사용함으로써 배포를 준비 중인 팀은 이곳에만 집중하고, 다른 팀은 다음 배포를 위한 기능 개발을 이어갈 수 있습니다.

직접적으로 관련된 내용을 제외하고는 새로운 기능을 병합하지 않고 버그 수정과 문서 작업 정도를 수행합니다.

모든 배포 준비가 완료되면 master 브랜치에 병합하며

변경 사항이 있을 수 있기에 develop 브랜치에도 병합 후 삭제해 줍니다.

release 브랜치 생성 후 전환
$ git checkout -b release-1.1 develop

배포 작업 수행 후 master 브랜치로 이동 후 병합
$ git checkout master
$ git merge --no-ff release-1.1

병합한 커밋에 Release 버전에 대한 태그 부여
$ git tag -a 1.1

develop 브랜치에도 병합 후 삭제
$ git checkout develop
$ git merge --no-ff release-1.1
$ git branch -d release-1.1

 

< hotfix branch >

 

hotfix 브랜치는 출시 버전에서 발생한 버그를 빠르게 수정할 필요가 있을 때 master에서 분기하는 브랜치입니다.

문제가 되는 부분만을 빠르게 수정하여, 바로바로 동작할 수 있도록 해야 합니다.

문제를 해결했으면 master 브랜치에 병합하며 새로운 버전 이름으로 태그를 붙여 주면 됩니다.

hotfix 브랜치의 변경 사항은 develop 브랜치에도 병합해야 하고, 그 이후에는 다른 보조 브랜치와 동일하게 제거하면 됩니다.

release(1.1)에 대한 hotfix를 master에서 분기
$ git checkout -b hotfix-1.1.1 master

문제 해결 후 master 브랜치로 이동 후 병합
$ git checkout master
$ git merge --no-ff hotfix-1.1.1

병합한 커밋에 새로운 버전에 대한 태그 부여
$ git tag -a 1.1.1

develop 브랜치에도 병합 후 삭제
$ git checkout develop
$ git merge --no-ff hotfix-1.1.1
$ git branch -d hotfix-1.1.1

 

브랜치 이름 규칙

< feature >
- 추천하는 형식은 "feature/기능"의 형태이며, 예를 들어 "feature/login" 등이 있습니다.
- 만약 Issue tracker id를 사용한다 하면, "feature/{issue-id}-{name}"으로 만들 수 있습니다.

< release >
- "release-버전"의 형식으로 사용하는 것을 추천합니다.

< hotfix >
- "hotfix-버전"의 형식으로 사용하는 것을 추천합니다.

 

 

 

참고

Gitflow Workflow

A successful Git brancing model

브랜치의 종류

우린 Git-flow를 사용하고 있어요

 

728x90