Git Flow 정리

Git flow 설정과 전략, 명령어 예시들을 간단히 정리합니다.

Prerequsite

Git 설치

Git flow 설치

Github ssh 설정

1
2
3
4
5
6
7
8
# ssh key 생성(이미 키가 있으면 생략)
mkdir ~/.ssh
ssh-keygen -t rsa -C "${github_id}@github.com"
  
# ssh publick key 복사
cat ~/.ssh/id_rsa.pub
  
# 복사한 키를 https://github.com/settings/ssh 에 등록한다.
  • github ssh 포트가 다르면 추가 설정이 필요
  • ~/.ssh/config 파일에 아래 내용을 추가한다. (없으면 파일 생성)
1
2
3
4
5
Host github.com
    User git
    Hostname github.com
    IdentityFile ~/.ssh/id_rsa
    Port 20022

Git flow 전략

gitflow

Branch별 요약

  • master branch : 배포되었거나 배포될 소스가 저장되는 브랜치
  • develop branch : 다음 배포를 위해서 개발을 진행하는 브랜치
    • 여러명의 개발자가 공유하며 개발을 진행하는 브랜치
    • 로컬 브랜치에서 개발이 완료되면 완료된 소스를 develop 브랜치에 푸시하거나 PR을 보내 리뷰후 merge 하는것으로 개발이 진행된다.
  • feature branch : 각 개발자에 의해 기능 단위 개발이 진행되는 브랜치
    • 로컬에서 개발을 진행하는 브랜치
    • develop 브랜치에 merge된다.
  • hotfixs branch : 배포 버전에 생긴 문제로 긴급한 트러블슈팅이 필요할 때 개발이 진행되는 브랜치
    • master 브랜치에서 생성
    • master 브랜치로 직접 merge
    • develop 브랜치에도 적용 필요
  • release branch : 내부적으로 배포할 준비가 되었다고 생각되는 소스가 저장되는 브랜치
    • QA에서 테스트를 진행할 브랜치
    • QA중 버그발생시, 바로 적용. develop 브랜치에도 적용 필요
    • 추가 기능개발을 위해 develop 브랜치로 넘어가서는 안된다. 추가기능은 다음 release에 적용필요

Start Project

Clone Project from github

  1. 소스코드 Git Clone
  2. 프로젝트 디렉토리로 이동

git flow init

  • 로컬에 master 브랜치와 develop 브랜치가 생성된 상태에서 진행한다.
  • git flow init 명령어를 실행하면 아래와 같이 설정을 확인하는 대화 모드로 진입한다.
  • 모든 설정을 default로 사용한다.(feature, release, hotfix, …)
  • bugfix, support branch는 최근 git flow에 추가된 브랜치이며 git flow edition/version에 따라 없을수도 있고 실험적인 기능이므로 사용하지 않음.
  • Mac에서는 Cmd + Option + f 로 팝업창 생성
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ git flow init
 
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/]
Bugfix branches? [bugfix/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []

Git flow 명령어

알림

MYFEATURE과 RELEASE를 branch이름
ex) feature/test123 → FEATURE = test123

  • 새 기능(feature) 시작하기 : git flow feature start MYFEATURE
  • 기능 완료 : git flow feature finish MYFEATURE
  • 기능을 게시(publish) : git flow feature publish MYFEATURE
  • 게시된 기능 가져오기 : git flow feature pull origin MYFEATURE
  • 릴리즈 시작 : git flow release start RELEASE [BASE]
  • 릴리즈 완료 : git flow release finish RELEASE
  • 핫픽스 시작 : git flow hotfix start VERSION [BASENAME]
  • 핫픽스 완료 : git flow hotfix finish VERSION

Reference

Licensed under CC BY-NC-SA 4.0
Hugo로 만듦
JimmyStack 테마 사용 중