Day 3 - Git flow

2022-03-30

dev에서 새로 만든 레포지토리인 git-flow-practice를 clone 해온다.

git clone https://github.com/moonofchess/git-flow-practice.git

해당 디렉토리로 이동.

cd git-flow-practice

현재 main에 위치한 걸 확인할 수 있다.

$ git branch
* main

Git flow는 프로젝트 설정을 하기 위한 초기화가 필요하다.

git flow init

이후 몇몇 질문에 대답해 명명규칙을 정한다. 이때 기본값을 사용하길 권장한다.

이제 배포(release)를 위한 기능(feature) 개발을 시작해준다.

일반적으로 새 기능 개발은 develop에서 시작한다.

$ git branch
* develop
  main

fizzbuzz라는 새 기능의 개발을 시작해준다

git flow feature start fizzbuzz

develop에 기반한 새 기능 branch를 생성 후 그 branch로 전환된다.

$ git branch
  develop
* feature/fizzbuzz
  main

기능 파일을 생성해준다. 이때 기능 파일은 branch 이름과 같지 않아도 상관 없다. 편의를 위해 fizzbuzz라고 명명.

touch fizzbuzz.py

vim으로 기능을 위한 코드 작성

vi fizzbuzz.py

대충 작성 후, status 확인

git status

add와 commit을 해준다. 이때 commit은 -m 사용을 자제한다.

git add fizzbuzz.py
git commit

commit에는 feat: Create fizzbuzz.py라고 쓰고 이후 기능이 수정될 때마다 해당 수정 코드를 설명해주는 문장을 적어준다.

기능 개발이 끝났다면 기능 branch(fizzbuzz)를 develop에 병합, 기능 branch를 삭제, develop branch로 전환해준다.

코드는 다음과 같다.

git flow feature finish fizzbuzz

위 코드를 치면 merge commit 창이 뜨게 되는데 그냥 생략해준다.

이제 릴리즈를 시작하려면 아래 코드를 입력한다.

$ git flow release start v0.0.1

그렇게 되면 develop branch에서 release branch로 뻗어나가게 된다.
release branch는 사용자에게 배포할 준비를 하기도 하고 큰 단위의 테스트를 하기도 한다.
프론트엔드 같은 경우는 사용자에게 source code를 전달할 때 용량을 최대한 줄이는 게 중요하다. 이미지 리사이징, html이나 css 코드 공백 지우기 등.

많은 테스트들이 끝나면 release를 바로 닫아준다.

git flow release finish v0.0.1

finish를 하게 되면 세 개의 창이 뜨게 되는데 첫 번째는 main(위 그림엔 master라고 표기됨)에 들어가는 merge commit이다.
두 번째는 이 merge commit에 대한 라벨링이 하나 붙게 된다. 해당 버전에서 어떤 일이 일어나는지 설명하는 release note를 쓸 수 있다.
세 번째는 똑같은 버전의 코드를 develop에 한 번 넣는 마지막 merge commit이다.

release를 끝내게 되면 branch 상황에 develop, main만 남게 된다.

$ git branch
* develop
  main

아직 push를 해주지 않았기 때문에 다른 사람들은 어떤 일이 일어났는지 알 수 없다.

그렇기에 release가 끝나게 되면, develop과 main 각각 push를 해줘야 한다.

그러나 조심해야 할 건, 처음에 해당 레포지토리의 remote branch가 main뿐이라면 local에서 처음 생긴 develop이라는 branch를 전달해줘야 한다.

그때 그냥 push를 하는 게 아니고 upstream set을 해서 push 해줘야 한다.

local의 develop에서 remote의 develop으로 push를 할 때, remote의 develop은 처음 만들기 때문에 upstream set을 한다. 서로가 같은 develop이라는 걸 알려주는 것이다.

git push -u origin develop

그리고 main으로 이동해 main에도 push를 해준다.

git switch main

git push origin main

그렇게 하면 remote branch 상에서 main과 develop 모두 fizzbuzz.py가 생긴 걸 확인할 수 있다.


+++

tag를 조회한 후 push 해주면 release note가 작성된 라벨링을 확인할 수 있다.

git tag

git push --tags

좋은 웹페이지 즐겨찾기