안녕세계

[Git] git-flow 사용법 (git-flow cheatsheet) 본문

[Git] git-flow 사용법 (git-flow cheatsheet)

Junhong Kim 2018. 4. 11. 18:16
728x90
반응형

git-flow란?

Vincent Driessen의 브랜칭 모델을 적용하여 고수준으로 저장소를 관리하기 위한 git의 확장 개념입니다.

(Git GUI 프로그램인 SourceTree에서는 git-flow를 지원합니다.)

git-flow 시작하기

설치

MacOS에서는 homebrew를 사용하여 git-flow 브랜치 관리 전략을 손 쉽게 사용할 수 있습니다.

먼저 homebrew를 사용하여 git-flow-avh를 설치합니다. (homebrew 사용 방법 알아보기)

git-flow-avh를 설치하면 flow 명령어를 사용할 수 있습니다.

$ brew install git-flow-avh

 

초기 설정 (flow init -d)

flow init -d 명령어는 로컬 저장소에 develop 브랜치를 생성한 뒤 해당 브랜치로 checkout 합니다.

$ git flow init -d
Using default branch names.

Which branch should be used for bringing forth production releases?
   - master
Branch name for production releases: [master] 
Branch name for "next release" development: [develop] 

How to name your supporting branch prefixes?
Feature branches? [feature/] 
Release branches? [release/] 
Hotfix branches? [hotfix/] 
Support branches? [support/] 
Version tag prefix? [] 
 

명령어

$ git flow <feature | release | hotfix> <start | finish> <branch_name>

feature: 특정 기능을 개발/수정할 때 사용되는 브랜치
release: 배포시 사용되는 브랜치
hotfix: 서비스 되고 있는 소스(master 브랜치)의 문제를 해결후 병합(merge)해야할 때 사용되는 브랜치

 

사용예시

start: 새로운 브랜치 생성

# 기능 개발 시작 (feature/<branch_name> 브랜치 생성)
$ git flow feature start <branch_name>

# 배포 시작 (release/<branch_name> 브랜치 생성 및 해당 브랜치)
$ git flow release start <branch_name>

# 수정 배포 시작 (hotfix/<branch_name> 브랜치 생성 및 tag 설정)
$ git flow hotfix start <branch_name>

 

finish: 브랜치 병합후 해당 브랜치 삭제

# 기능 개발 완료 (develop ← feature 병합후 브랜치 삭제)
$ git flow feature finish <branch_name>

# 배포 (master ← release 병합후 브랜치 삭제 및 tag 설정)
$ git flow release finish <version_name>

# 수정 배포 (master ← hotfix 병합후 브랜치 삭제 및 tag 설정)
$ git flow hotfix finish <version_name>

프로젝트 적용

최초 적용 개발자

git-flow 초기 설정후 원격 저장소에 연결 합니다.

$ git clone <remote_url>
$ git flow init -d
# 원격 저장소에 develop 브랜치 생성
$ git push origin develop
# upstream 설정, 이제 git push 명령어로 develop 브랜치로 소스를 업로드할 수 있습니다.
$ git branch --set-upstream-to=origin/develop develop

 

git-flow가 적용된 프로젝트를 복제(clone)하는 개발자

원격 저장소 연결

$ git clone <remote_url>
$ git checkout -b develop origin/develop
$ git flow init -d
 
git-flow 사용

특정 기능(feature) 개발시

$ git flow feature start <branch_name>
# 개발 완료 후
$ git flow feature finish <branch_name>
# 원격 저장소 반영
$ git push origin master

 

개발후 배포(release) 시기

$ git flow release start <version_name>
$ git flow release finish <version_name>
$ git push origin master
$ git push --tags

 

728x90
반응형
Comments