tag는 release 버전을 서버에 배포할때 조작한다.
- github repository에서 조작할 수 도 있고 local respository에서도 조작할 수 있다.
과정
- develop에서 나가는 release 브랜치 생성
- master: 제품으로 출시될 수 있는 브랜치
- develop : 다음 출시 버전을 개발하는 브랜치
- release : 이번 버전으로 출시하는 브랜치
- hotfix : 출시 버전에서 발생한 버그를 수정하는 브랜치
git checkout -b relase develop
- 이후 커밋한 내용은 이번 버전에 넣을 내용일 경우 release에 넣고 다음 버전에 넣어도 될 개발은 develop에 넣는다.
- release를 master에 merge한다
[master] git merge --no-ff release
- merge된 모든 커밋이 표시되며 Merge branch 'release' into master 문이 생성된다
- master branch에 tag를 붙인다.
- git tag -a 1.0.0
- origin master에 push 한다.
- develop에서는 master를 rebase한다
- 다른회사의 gitflow를보면 develop에서도 위와같이 rebase없이 merge 하지만 이러면 merge message가 두개 뜨게되어 보기 좋지않기때문에 본인은 rebase를 택했다.
예시
develop의 rebase master 없이 merge하는 경우와 rebase 한 경우와 비교를 해보자.
먼저 다음의 공통 상황이후부터 차이가 시작된다.
- master와 develop에 commit 1이 다음과 같이 들어있다
- 새로운 개발 commit develop 2가 들어왔다.여기서 이제 새로운 버전을 생성하기로 하고 release branch를 열었다.
- 이번 버전에 급하게 release하기위한 commit release 3가 생겨 release branch에 commit 했다.
no rebase
- 이제 버전을 tag하기 위해 release를 develop과 master에 merge했다. 이후 release branch는 삭제한다.
- 버전 업그레이드를 할 시기가 또 왔다. 현재 develop에는 develop 4 가 commit 되어있고 이 내용을 위와같이 release한 결과는 mster와 develop이 각각 다음과 같다.
yes rebase
- 이제 버전을 tag하기 위해 release 를 master에 merge한후 develop에는 master를 rebase 한다. 이후 release branch는 삭제한다.
- 버전 업그레이드를 할 시기가 또 왔다. 현재 develop에는 develop 4 가 commit 되어있고 이 내용을 위와같이 release한 결과는 mster와 develop이 각각 다음과 같다.
'Git' 카테고리의 다른 글
git으로 프로젝트 관리하는 방법 - Issue 관리 (0) | 2021.01.09 |
---|---|
cherry-pick 필요 상황 및 사용법 (2) | 2020.12.29 |