git-flow
Last updated
Last updated
git-flow는 Vincent Driessen의 branching model을 적용하여 고수준으로 저장소를 관리할 수 있도록 해주는 확장기능이다. branching model은 feature
- develop
- release
- hofixes
- master
단계로 branch를 누눠서 코드를 관리하는 전략이며, 사용자가 쉽게 접근하고 사용할 수 있도록 확장 기능(명령어)을 제공하는 것이다.
Git-flow에는 5가지 종류의 브랜치가 존재한다. 항상 유지되는 주요 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)이 있다.
master : 제품으로 출시될 수 있는 브랜치
develop : 다음 출시 버전을 개발하는 브랜치
feature : 기능을 개발하는 브랜치
release : 이번 출시 버전을 준비하는 브랜치
hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치
깃에서의 기본 브랜치이다. 배포되었거나 배포 준비된 코드는 origin/master
에 두고 관리한다. master
브랜치에 merge한다는 것은 새로운 버전을 배포한다는 것을 의미한다.
다음에 배포하기 위해 개발하는 코드는 origin/develop
에서 관리한다. 프로젝트를 진행하는 개발자들이 함께 보며 업무를 진행하는 브랜치이다. develop
브랜치의 코드가 안정화되고, 배포할 준비가 되면 master
에 merge하고, 배포버전으로 태그를 단다.
develop
브랜치는 master
로부터 시작된 브랜치이다.
시작 브랜치 : develop
병합(merge) 대상 브랜치 : develop
Branch naming 규칙
master
, develop
, release-*
, hotfix-*
을 제외한 어떠한 것
우리는 일감번호-일감에대한간략한내용으로 생성하고 있다.
feature
브랜치는 배포하려고 하는 기능을 개발하는 브랜치이다. 기능을 개발하기 시작할 때는 언제 배포할 수 있을지 알 수 없다. feature
브랜치는 그 기능을 다 완성할 때까지 유지하고 있다가 다 완성되면.develop
브랜치로 merge한다.
feature/branchname
으로 생성되고, 자동으로 해당 branch로 checkout된다.
생성한 feature
branch를 develop
브랜치에 merge한다. 그리고 feature 브랜치를 삭제하고, develop 브랜치로 전환한다.
해당 branch를 다른 개발자와 공동으로 개발하고 싶다면 원격 서버에 올려주면된다.
다른 개발자가 사용하는 브랜치를 가져오는 명령어이다.
시작 브랜치 : develop
병합(merge) 대상 브랜치 : develop
, master
Branch naming 규칙
release-*
release
branch는 실제 배포할 상태가 된 경우에 생성하는 브랜치이다. 보통 release 점검을 위해 간단한 버그를 수정하는 작업 등의 목적으로 사용된다.
우리는 사용안하고 있다.
release를 시작하면 release/<version>
의 이름을 갖는 새로운 branch를 하나 생성하여 checkout한다.
release 브랜치를 생성한 후에는 commit을 허용하기 위해 publish 해주는 것이 현명하다.
다음과 같이 원격 release
브랜치의 변경을 추적할 수 있다.
release를 위한 점검이 끝난 경우에 release를 종료한다.
release finish
명령어가 실행되면 1. release 브랜치 코드를 master에 merge 2. release 이름으로 태그 등록 3. release를 develop branch에 재병합(back-merge) 4. release 브랜치삭제 순으로 진행된다.
시작 브랜치 : master
병합(merge) 대상 브랜치 : develop
, master
Branch naming 규칙
hotix-*
배포를 준비하고, 이미 배포한 제품이나 서비스의 버그를 즉각 대응(hotfix)해야할 때 사용하는 브랜치이다. 즉, 긴급 수정 브랜치이다.
여기서 version은 hotfix
이름을 지정한다. 선택적으로 basename으로 시작점을 지정할 수 있다.
핫픽스를 종료하면 핫픽스는 develop
및 master
브랜치로 merge된다. master 브랜치로의 merge 부분은 핫픽스 버전으로 tag된다.
gif-flow
는 hotfix를 dev와 master에 각각 merge를 한다. 즉, 가지가 hot fix 하나에서 dev와 master branch로 나누어지는 형태이다.
git-flow-avh
는 hotfix가 dev branch로 merge되고, hotfix가 merge된 dev branch를 master branch에 merge하는 형태이다. (hotfix
> dev
> master
순서, git-flow-avh
가 최신 버전이다.)
https://nesoy.github.io/articles/2018-09/Git-Flow