(협업에서) git flow를 시작하기 전, .gitignore 파일 생성, issue template 생성, 셋업 등은 미리 해놓는 것이 좋다.
(main) git flow init
: git flow를 쓰기 위해 초기화한다.
이때, Branch name for “next release” development가 develop으로 자동으로 입력되어 있는데, 관습으로 develop을 사용한다.
이외에도 여러 브랜치 이름,prefix가 자동으로 할당된다. 그대로 쭉 enter를 입력하면 된다.
git branch
를 입력하면 develop 브랜치가 생성된 것을 확인할 수 있다. → git flow init이 잘 끝난 것(develop) git flow feature start fizzbuzz
: git flow를 이용해서 fizzbuzz라는 이름의 feature(기능)를 개발하기 시작하겠다.
(feature/fizzbuzz) 생성된 feature/fizzbuzz 브랜치에서 작업을 진행하고, 작업을 마치면 작업한 파일들을 add,commit 한다.
(feature/fizzbuzz) git flow feature finish fizzbuzz
: commit을 마치면, 더이상 fizzbuzz 브랜치에서 할 작업이 없기 때문에 작업을 끝낸다.
(develop) git flow release start v0.1
: 위 과정을 반복하며 개발한 기능들이 develop 브랜치에 쌓이게 되면, git flow를 이용해서 release를 한다.
네이밍 전략 : 보통 version을 뜻하는 v에 숫자를 붙인다. 두 자리가 될지, 세 자리가 될지는 팀에서 버전 네이밍을 어떻게 하냐에 따라 달라진다. (보통 release가 많으면 세 자리를 쓴다.)
가장 앞에 있는 0은 베타 버전을 의미한다. (0에서 1로 올라가는 것은 아주 큰 이벤트다.)
(release/v0.1) git flow release finish v0.1
: release를 마친다.
release finish를 하는 순간, 마지막 상태를 main과 develop 브랜치에 넘겨주게 된다.
정리하자면, git flow release finish를 실행하면
(develop) git push -u origin develop
, (main) git push origin main
: release 가 끝나면 develop 브랜치와 main 브랜치에서 각각 push한다.
우리가 작업할 때는 로컬의 develop 브랜치에서 작업했지만, remote repository인 github에는 develop 브랜치가 없고, main 브랜치만 있다. 그러므로, remote에도 develop 브랜치를 추가해줘야 한다.
git push --tags
: 지금 발행되어있는 tag를 모두 push 한다.
Github에서 create release from tag를 통해 tag를 발행한다.