[Git Flow] 개념 정리
git flow,,,란 간단한듯 싶다가도 은근 헷갈리는 고런것,,
(아주 개발새발로 그린 그림,,)
* 브랜치 설명
- master : 제품으로 출시될 수 있는 브랜치
- develop : 다음 출시 버전을 개발하는 브랜치
- feature : 기능을 개발하는 브랜치
- release : 이번 출시 버전을 준비하는 브랜치
- hotfix : 출시 버전에서 발생한 버그를 수정하는 브랜치
* feature : 새 기능(feature) 개발, 일반적으로 개발자의 저장소에만 존재
- 시작하기
git flow init
- feature 개발 시작
git flow feature start MYFEATURE
- 새 feature는 develop 브랜치에서 시작
- 위 명령어는 'develop'에 기반한 새 feature 브랜치를 생성하고 그 브랜치로 전환한다
- feature 완료
git flow feature finish MYFEATURE
- feature 브랜치를 'develop'에 병합(merge)한다
- feature 브랜치를 삭제한다
- develop 브랜치로 전환한다
- feature 게시
git flow feature publish MYFEATURE
- 기능을 원격 서버에 게시해서 다른 사용자들도 사용할 수 있게 함
- 게시된 feature 가져오기
git flow feature pull origin MYFEATURE
* release : 새로운 제품 출시 준비, 사소한 버그 수정이나 메타 데이터 준비 허용
- release 시작
git flow release start RELEASE [BASE]
- 'develop' 브랜치로부터 'release' 브랜치 생성
- release를 시작할 [BASE] commit sha-1 해시를 선택적으로 줄 수도 있음(그 commit은 반드시 'develop'에 있어야함)
git flow release publish RELEASE
- release 브랜치 생성 후 다른 개발자들의 commit을 허용하기 위해 publish
git flow release track RELEASE
- 원격 'release' 브랜치의 변경 추적
- release 완료
git flow release finish RELEASE
- 'release' 브랜치를 'master' 브랜치에 병합(merge)
- release를 release 이름으로 tag
- release를 'develop' 브랜치로 재병합(back-merge)
- 'release' 브랜치 삭제
* hotfix : 문제에 즉각 대응, 'master' 브랜치의 현재 출시된 버전으로 표기된 태그로부터 브랜치를 딴다
- hotfix 시작
git flow hotfix start VERSION [BASENAME]
- VERSION은 hotfix release 이름을 지정
- 선택적으로 basename으로 시작점을 지정할 수도 있음
- hotfix 완료
git flow hotfix finish VERSION
- hotfix를 종료하면 hotfix는 'develop' 및 'master' 브랜치로 병합됨
- 'master'의 병합 부분은 핫픽스 버전으로 태그됨
그리고 추가로 발견한 좋은 글
- 좋은 commit 메세지 작성하기 djkeh.github.io/articles/How-to-write-a-git-commit-message-kor/
* 출처
danielkummer.github.io/git-flow-cheatsheet/index.ko_KR.html
nvie.com/posts/a-successful-git-branching-model/
woowabros.github.io/experience/2017/10/30/baemin-mobile-git-branch-strategy.html