본문 바로가기

Tools/깃 Git

git-flow 사용법

init

git-flow를 사용하기 위해서는 git 저장소를 git-flow에 맞게 초기화해야 한다. 어떤 브랜치를 어떤 용도로 사용할 것인지 등을 명시한다. 

디렉토리에서 git저장소를 만드는 것처럼 init명령을 실행한다.

$ git flow init
$ git flow init -d
기본값으로 지정할 때 옵션 -d

명령을 실행하면 Vincent Driessent의 브랜치 모델에 제안된 브랜치들의 이름을 내가 임의로 지정할 수도 있고, 보통은 엔터를 눌러 기본값으로 이름을 설정한다. 혹은 옵션 -d를 사용한다.

6개의 브랜치가 지정된다.

- master: 사용자에게 배포되는 안정적인 브랜치

- develop: 다음 릴리즈를 위해 개발한 기능들을 모으는 최신 브랜치

- feature: 특정 기능 개발을 위한 브랜치

- release: 릴리즈를 위해 버그 픽스(Bug fix)를 모으는 브랜치

- hotfix: 긴급 버그 픽스를 위한 브랜치

- support: 버전 호환성 문제를 위한 브랜치 

 

- Version tag prefix 항목은 릴리즈가 master브랜치에 병합될 때 생성되는 태그의 프리픽스(prefix) 문자열이다. 버전을 태그로 할 수도 있고, 'rel/'같은 문자열을 앞에 넣을 수도 있다.

 

- Hooks and filters directory는 git hook을 위한 디렉토리이다. git hook은 어떤 이벤트가 발생했을 때, 자동으로 특정 스크립트를 실행하도록 설정할 수 있다. 예를 들어 커밋이 발생했을 때, 자동으로 push를 하는 기능을 post-commit 파일에 저장해놓을 수 있다. 이 파일들이 위치한 디렉토리를 명시하는 곳이다.

 

feature 브랜치

버그 수정이나 기능 추가를 위해 feature브랜치를 사용할 수 있다. 새로운 개발브랜치(feature브랜치)를 생성하기 위해서는 다음 명령을 실행한다.

$ git flow feature start <feature name>

이 명령을 실행하면 develop브랜치를 기반으로 새로운 feature브랜치가 생성된다. 이 후 자동으로 생성된 feature브랜치로 checkout된다. 생성된 feature브랜치는 feature/<feature name> 형태의 이름을 갖는다. (git-flow init 과정에서 feature브랜치 이름 대신 다른 문자열을 적었다면 feature대신 그 문자열이 들어간다.)

평소 git을 이용하는 것처럼 feature브랜치에 개발을 진행한 후 작업이 끝나고 마무리할 때는 다음 명령을 실행한다.

$ fit flow feature finish <feature name>

이 명령을 실행하면 1) git-flow가 develop브랜치로 chekcout한 다음 feature브랜치의 내용을 병합한다. 그리고 2) feature브랜치를 삭제한다. PR과정이 필요하다면 이 기능 대신 깃허브의 PR기능을 이용해야 한다.

깃허브에서 PR을 사용하려면 우선 리모트 저장소에 push가 되어있어야 한다.

publish 명령을 실행하면 원격 저장소에 feature브랜치를 push한다.

$ git flow feature publish <feature name>

반대로 원격 저장소에서 feature브랜치를 가려오려면 다음 명령을 수행한다.

$ git flow feature pull origin <feature name>

 

release 브랜치

release브랜치를 생성하기 위해서는 다음 명령을 실행한다.

$ git flow release start <version>

이 명령을 실행하면 release/<version>이라는 release브랜치가 생성된다. (git-flow init 과정에서 release브랜치 대신 설정한 브랜치이름이 있다면 release 문자열 대신 들어간다.)

이 브랜치에 릴리즈 과정에서 수정된 내용들이 들어가면 된다.

깃헙 등에서 협업을 위해 원격 저장소로 push도 할 수 있다.

$ git flow relase publish <version>

반대로 원격 저장소에서 변경사항을 가져오려면 다음 명령을 수행한다.

$ git flow release track <version>

pull 대신 track을 사용한다는 점을 유의해야한다.

릴리즈 준비가 끝났으면 finish로 마무리 한다.

$ git flow release finish <version>

이 명령을 실행하면 1) release브랜치를 master브랜치에 병합(merge)하고 release버전을 태그로 생성한다. 이 때, git flow init에서 명시한 Version tag prefix 문자열이 release 버전 앞에 추가되어 태그로 생성된다. 2) release브랜치를 develop브랜치에 병합(merge)한다. 3) release브랜치를 삭제한다.

마지막으로 새로운 릴리즈가 포함된 master브랜치를 원격 저장소에 태그와 함께 push한다.

$ git push --tags

 

hotfix 브랜치

긴급 패치 적용을 위한 hotfix브랜치를 다음 명령으로 생성할 수 있다.

$ git flow hotfix start <version>

마찬가지로 hotfix/<version> 브랜치가 생성되고 checkout된다. (마찬가지로 이름바꿨으면 브랜치 이름도 바뀐다)

버그를 고치고 마무리되면 다음 명령을 수행한다.

$ git flow hotfix finish <version>

이 명령을 수행하면 1) hotfix브랜치를 master브랜치로 병합하고 hotfix버전을 태그로 생성한다. 마찬가지로 Version tag prefix문자열이 hotfix버전 앞에 추가되어 태그로 생성된다. 2) hotfix브랜치를 develop브랜치에 병합한다. 3) hotfix브랜치를 삭제한다.

마지막으로 새로운 hotfix가 포함된 master브랜치를 원격 저장소에 태그와 함께 push한다.

$ git push \--tags

https://hbase.tistory.com/60

'Tools > 깃 Git' 카테고리의 다른 글

git-flow란, git-flow 설치  (0) 2022.04.04
깃허브 폴더 화살표 클릭 안됨 remote git repository arrow  (0) 2022.03.05
깃 브랜치 Git Branch  (0) 2021.12.16
깃 기초 Git basic  (0) 2021.12.16