Wecode -기업협업 인턴 (부트캠프)/기업협업 독학, 공부

git flow 개념, branch 개념/ 종류 / 구분

JBS 12 2023. 10. 31. 08:52

 

 

git flow 사용법 (git flow avh), 명령어

git flow 개념, branch 개념/ 종류 / 구분git flow란? Vincent Driessen의 브랜칭 모델을 위한 고수준 저장소 작업을 제공하는 git의 확장" - merge 기반 솔루션 - feature 브랜치를 rebase하지 않음 Vincent Driessen의 브

pm-developer-justdoit.tistory.com

git flow란?
Vincent Driessen의 브랜칭 모델을 위한 고수준 저장소 작업을 제공하는 git의 확장"

 

 

- merge 기반 솔루션 

- feature 브랜치를 rebase하지 않음

master : 제품으로 출시될 수 있는 브랜치
develop : 다음 출시 버전을 개발하는 브랜치
feature : 기능을 개발하는 브랜치
release : 이번 출시 버전을 준비하는 브랜치
hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치

 

 

우린 Git-flow를 사용하고 있어요 | 우아한형제들 기술블로그

{{item.name}} 안녕하세요. 우아한형제들 배민프론트개발팀에서 안드로이드 앱 개발을 하고 있는 나동호입니다. 오늘은 저희 안드로이드 파트에서 사용하고 있는 Git 브랜치 전략을 소개하려고 합

techblog.woowahan.com

 

Vincent Driessen의 브랜칭 모델에는 5개의 branch
(master, develop, feature, release, hotfix)
Forking Workflow 방식: 각 개발자들마다 원격 저장소를 만들고 pull request를 보내야  
기준이 명확하고 관리를 잘한다면 좋은 방식이지만,
몇 년 동안 여러 개발자들이 거쳐가면서 정리되지 않은 엄청난 양의 branch들이 생겼다.
branch들은 생성한 본인이 관리를 해야 하기 때문에 관리가 어렵다.
그래서 신규 프로젝트들은 모두 git-flow를 적용시켜서 협업을 시작

 

GIT-FLOW의 강점

- 사용이 간편해 쉽게 접근 가능하다.
- branch 관리를 더 깔끔하게 할 수 있다.
- 버전에 따라 관리가 쉽다.
- 배포 및 수정이 간편해 빠르게 배포가 가능하다.

 

 

Branch


master : 정식으로 배포되는 소스를 관리하는 브랜치
develop : 다음 배포를 위해 개발단의 소스를 관리하는 브랜치
feature : 새로운 기능 개발을 위한 브랜치
release : 성능 개선, 버그 수정 등을 위한 브랜치
hotfix : master를 기반으로 긴급 패치 작업을 위한 브랜치

 

[git fow 브랜치 관리]

  1. main branch : 개발 프로세스 전반 항상 유지되는 브랜치 
  2. develop branch : 개발 프로세스 전반 항상 유지되는 브랜치
  3. supporting branch -> feature / release / hotfix branch : 필요할 때마다 생성되고, 역할을 다하면 삭제됨

Supporting 브랜치 덕분에 팀이 병렬적으로 업무를 할 수 있게 됨

 

 

Main 브랜치는 출시 가능한 프로덕션 코드를 모아두는 브랜치

프로젝트 시작 시 생성되며, 개발 프로세스 전반에 걸쳐 유지된다.

배포된 각 버전을 Tag를 이용해 표시

 

Develop 브랜치
다음 버전 개발을 위한 코드를 모아두는 브랜치이다. 개발이 완료되면, Main 브랜치로 머지

 

 

Feature 브랜치
하나의 기능을 개발하기 위한 브랜치이다. 

Develop 브랜치에서 생성

기능이 개발 완료되면 다시 Develop 브랜치로 머지된다.

 

머지할때 주의점은 Fast-Forward로 머지하지 않고, Merge Commit을 생성하며 머지를 해주어야 한다. 이렇게해야 히스토리가 특정 기능 단위로 묶이게 된다.

네이밍은 feature/branch-name 과 같은 형태로 생성

 

 

Release 브랜치
소프트웨어 배포를 준비하기 위한 브랜치이다. 

Develop 브랜치에서 생성하며, 버전 이름 등의 소소한 데이터를 수정하거나 배포전 사소한 버그를 수정하기 위해 사용된다. 

 

배포 준비가 완료되었다면

 Main과 Develop 브랜치에 둘다 머지한다. 이때, Main 브랜치에는 태그를 이용하여 버전을 표시한다.

Release 브랜치를 따로 운용함으로써, 배포 업무와 관련없는 팀원들은 병렬적으로 Feature 브랜치에서 이어서 기능을 개발할 수 있게된다.

네이밍은 release/v1.1 과 같은 형태로 생성한다.

 

Hotfix 브랜치
이미 배포된 버전에 문제가 발생했다면, Hotfix 브랜치를 사용하여 문제를 해결한다.

 Main 브랜치에서 생성하며, 문제 해결이 완료되면 Main과 Develop 브랜치에 둘다 머지한다.

Release 브랜치와 마찬가지로 Hotfix 브랜치를 따로 운용함으로써, 핫픽스 업무와 관련없는 팀은 병렬적으로 기능 개발을 할 수 있다.

네이밍은 hotfix/v1.0.1 과 같은 형태로 생성