git-flow를 사용하여 동료들과 협업을 하면서 느낀 점과 사용방법을 정리해보았습니다.
GIT-FLOW 란?
git branch 전략 중 하나로 Vincent Driessen의 브랜칭 모델을 위한 고수준 저장소 작업을 제공하는 git의 확장입니다.
Vincent Driessen의 브랜칭 모델에는 5개의 branch(master, develop, feature, release, hotfix)가 사용됩니다.
GIT-FLOW를 선택한 이유
레거시 프로젝트 같은 경우는 Forking Workflow 방식을 사용을 했었는데, 각 개발자들마다 원격 저장소를 만들고 pull request를 보내야 합니다.
기준이 명확하고 관리를 잘한다면 좋은 방식이지만, 몇 년 동안 여러 개발자들이 거쳐가면서 정리되지 않은 엄청난 양의 branch들이 생겼습니다.
branch들은 생성한 본인이 관리를 해야 하기 때문에 관리가 어려웠습니다.
그래서 신규 프로젝트들은 모두 git-flow를 적용시켜서 협업을 시작했습니다.
GIT-FLOW의 강점
- 사용이 간편해 쉽게 접근 가능하다.
- branch 관리를 더 깔끔하게 할 수 있다.
- 버전에 따라 관리가 쉽다.
- 배포 및 수정이 간편해 빠르게 배포가 가능하다.
Branch
- master : 정식으로 배포되는 소스를 관리하는 브랜치
- develop : 다음 배포를 위해 개발단의 소스를 관리하는 브랜치
- feature : 새로운 기능 개발을 위한 브랜치
- release : 성능 개선, 버그 수정 등을 위한 브랜치
- hotfix : master를 기반으로 긴급 패치 작업을 위한 브랜치
GIT-FLOW 설치
- macOS
brew install git-flow-avh
- Linux
apt-get install git-flow
- Windows
wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash
* git-flow의 설치를 위해서는 wget과 util-linux가 필요합니다.
GIT-FLOW 사용방법
초기화
git flow를 사용하려면 프로젝트 설정을 변경하기 위해 초기화 작업이 필요합니다.
git flow init
git flow init 명령으로 초기화를 해주고 브랜치의 명명규칙을 정해줍니다. (변경 가능)
feature 브랜치
새로운 기능 개발을 위한 feature branch를 생성합니다.
git flow feature start <branch name>
개발 완료가 되었다면 다음 명령어를 실행하여 develop에 merge 합니다.
git flow feature finish <branch name>
finish를 하면 develop으로 checkout 후 병합하며, 해당 브랜치는 삭제됩니다.
만약 pull request가 필요하거나 코드 리뷰 또는 해당 브랜치를 확인하기 위해 remote 저장소에 올려야 한다면 다음 명령어를 실행합니다.
git flow feature publish <branch name>
원격 저장소에 브랜치를 push 합니다.
다른 개발자가 push 한 브랜치를 track으로 가져올 수 있습니다.
git flow feature track origin <branch name>
관리가 용이해서 요즘 많이 사용하고 있는 git branch 전략 중 하나인 것 같습니다.
프로젝트에 맞게 한번 사용해보시는 것 추천드립니다!