Git

git-flow 사용하기

git flow란 ?

  • Vincent Diessenbranching model을 적용하여 저장소를 관리할 수 있도록
    해주는 확장기능

  • feature - develop - release - hotfixes - master 단계로 branch를 나누어서 버전을 관리하는 전략.

  • branch 관리를 위한 확장 명령어를 제공하는 역할만 하기 때문에 기존의 git 명령어로도 이를 그대로 구현 가능

  • 내 나름대로 정의를 해보면 ‘branch를 사용하기 위하여 처리해야 하는 귀찮은 일련의 작업을 쉽게 처리할 수 있게 도와주는 확장 기능’

git flow로 만들 수 있는 branch 6종

  • master : 최종 릴리즈에 사용되는 안정된 버전
  • develop : 다음 릴리즈를 위해 개발중인 최신 버전
  • feature : 특정 기능 개발을 위한 branch
  • release : 릴리즈 점검을 위한 branch
  • hotfix : 긴급 버그 픽스를 위한 branch
  • support : 버전 호환성 문제를 처리하기 위한 branch

설치

  • git flow는 OSX, Linux, Window 환경에서 동작한다.
  • git bash에는 기본으로 설치가 되어있다.
  • 필자는 git bash를 사용.
  • git bash 설치

git flow 시작하기

  • 작업을 진행할 git 저장소에서 다음 명령어를 통해 초기화 한다.

    1
    $ git flow init
  • git flow init 명령어를 사용하면 branch 이름을 입력하라는 메세지가 출력된다. 이 과정을 생략하려면 아래 명령어를 사용한다.

    1
    $ git flow init -d
  • 특정 기능 개발을 하기 위한 branch는 feature를 사용한다. feature에서 git flow를 시작하기 위해서는 아래 명령어를 사용한다.

    1
    $ git flow feature start {branch_name}
  • 자동으로 해당 branch로 checkout 된다.

  • 해당 branch에서 기능 개발이 완료하면 아래 명령어를 입력한다.

    1
    $ git flow feature finish {branch_name}
  • feature finish 명령어를 실행하면 자동으로 아래의 일련의 과정들을 수행한다.

  1. develop branch로 checkout
  2. feature branch의 작업 내용을 develop branch에 merge
  3. 작업이 끝난 feature branch를 삭제
  • 만약 해당 feature branch가 존재했다는 사실을 github page에 남기고 싶으면 commit 메세지를 작성하면 된다.

  • 만약 해당 branch를 merge 하지않고 삭제하고 싶다면 아래 명령어를 사용한다.

    1
    $ git branch -D {branch_name}

Release 하기

  • release를 하기 위해서는 아래 명령어를 사용한다.

    1
    $ git flow release start {version}
  • 위 명령어를 실행하면 develop branch의 내용을 바탕으로 release/{version}의 이름을 갖는 새로운 branch를 하나 생성하여 checkout 한다.

  • version은 보통 v0.0.1형식으로 작성한다. 정식버전이 출시되면 v1.0.0 처럼 가장 앞의 숫자를 증가시키고 핵심 기능의 변화 등은 v1.1.0 작은 기능의 변화 등은 v1.1.1의 형식으로 작성한다.

  • release를 위한 점검이 종료되면 release를 finish 한다.

    1
    $ git flow release finish {version}
  • release finish 명령어를 실행하면 자동으로 아래의 일련의 과정들을 수행한다.

  1. release branch의 code를 master branch에 merge 한다.
  2. release의 이름으로 태그 등록
  3. release를 develop branch로 재병합
  4. release branch 삭제
Share