- git flow
- (hotfix) - master - (release) - develop - feature
- 각 단계가 명확히 구분되며 가장 많이 사용
- github flow
- master - feature
- branch model이 단순화
- CI 의존성이 높음
- library, framework처럼 일정한 주기를 가지고 출시할 필요가 없는 프로젝트에 사용됨
- gitlab flow
- production - pre-production - master - feature
-deploy, issue에 대한 대응이 가능하도록 보완
이 중 git flow를 사용해보고자 한다.
- Github에서 New Repository를 생성하고 환경 설정을 한다.
- git bash에서 clone을 하여 로컬 저장소로 작업을 가져온다.
- main branch는 최종적인 결과물을 push하기 위해서만 사용되며 대부분의 작업은 develop branch나 feature branch에서 수행한다.
- 최종 결과물이 main branch로 push되기 전에 release branch에서 버전 생성이 가능하다.
- release name은 v0.1 혹은 v0.0.1과 같은 형태로 맨 앞 0은 베타 버전을 의미하고,
맨 앞의 숫자의 변화는 두 버전 간의 호환이 불가능함을 나타낸다.
$ git flow init
$ git flow feature start (feat_name) ##feature branch 자동 생성 및 전환
## 작업 수행 및 commit
$ git flow feature finish (feat_name) ##feature branch가 locally deleted 되고 develop branch로 switch
$ git flow release start (rela_name)
$ git flow release finish (rela_name)
## tag 작성
$ git push -u origin develop
## local 저장소에는 develop branch가 존재하지만 remote 저장소에는 존재하지 않기 때문에 같은 branch임을 알려주는 -u 옵션을 사용
$ git switch main
$ git push origin main
$ git push --tag ##release branch에서 작성한 tag도 따로 push 해야 함.
위와 같은 사이클의 진행은 불안정한 프로젝트의 출시를 예방하여 진행방식을 숙지할 필요성이 매우 높다.