Git-flow
Git-flow 는 Vincent Driessen 이라는 사람의 블로그 글을 통해서 알려졌고 현재는 자주 쓰이는 방법론이다. 총 5가지의 브랜치를 사용해서 운영한다.
- master : 기준이 되는 브랜치로 제품을 배포하는 브랜치
- develop : master에서부터 시작된 개발 브랜치로 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 합침.
- feature : develop 브랜치에서부터 생성된 브랜치로 단위 기능을 개발하는 브랜치. 기능 개발이 완료되면 develop 브랜치로 merge 됨.
- release : develop 브랜치에서부터 생성된 브랜치로 배포를 위해 master 브랜치로 보내기 전에 먼저 QA(품질검사)를 하기 위한 브랜치. QA를 무사히 통과했다면 release 브랜치를 master와 develop 브랜치로 merge 함.
- hotfix : master 브랜치로 배포를 했는데 버그가 생겼을 떄 긴급 수정하는 브랜치
master와 develop 이 중요한 메인 브랜치이고, 나머지는 필요에 의해서 운영되는 브랜치이다.
- 일단 master 브랜치에서 시작한다.
- 동일한 브랜치를 develop에도 생성한다. 개발자들은 이 develop 브랜치에서 개발을 진행한다.
- 개발을 진행하다가 회원가입, 장바구니 등의 기능 구현이 필요할 경우 A개발자는 develop 브랜치에서 feature 브랜치를 하나 생성해서 회원가입 기능을 구현하고 B개발자도 develop 브랜치에서 feature 브랜치를 하나 생성해서 장바구니 기능을 구현한다.
- 완료된 feature 브랜치는 검토를 거쳐 다시 develop 브랜치로 merge 된다.
- 모든 기능이 완료되면 develop 브랜치에서부터 release 브랜치를 생성한다.
- 그리고 QA(품질검사)를 하면서 보완점을 보완하고 버그를 수정한다.
- QA를 무사히 통과했다면 release 브랜치를 master와 develop 브랜치로 merge 한다.
- 마지막으로 master 브랜치에서 버전 추가를 위해 태그를 하나 생성하고 배포한다.
- 배포를 했는데 미처 발견하지 못한 버그가 있을 경우 hotfixes 브랜치를 만들어 긴급 수정 후 태그를 생성하고 바로 수정 배포한다.
GitHub-flow
규모가 있는 개발의 경우 fork 와 PR(pull request) 을 활용한다.
fork 는 프로젝트를 통째로 외부로 복제해서 개발을 하는 방식이다. 저장소는 upstream, origin, local 이렇게 세 부분으로 구성된다. upstream (관례적 표현) 은 개발자들이 공유하는 최상위 저장소로 최신 소스코드가 저장되어 있는 원격 저장소이다. origin (관례적 표현) 은 upstream 저장소를 fork 한 원격 개인 저장소이다. local 은 내 컴퓨터에 저장되어 있는 개인 저장소이다.
local 저장소에서 각자 작업을 완료한 한 후 작업 브랜치를 origin 저장소에 push 한다. 그리고 Github에서 origin 저장소에 push한 브랜치를 upstream 저장소로 merge 하는 Pull Request (PR) 를 생성하고 코드 리뷰를 거친 후 merge 한다. 다시 새로운 작업을 할 때 local 저장소에서 upstream 저장소를 pull 한다.
- rainbow 브랜치를 만든다.
- rainbow 파일을 추가하고 commit 을 한다.
- rainbow 브랜치를 원격 저장소에 push한다.
- GitHub에서 푸시 된 rainbow 브랜치를 Pull Request (PR) 한다.
- GitHub에서 코드리뷰를 한다. 리뷰에 따라 코드를 수정하고 다시 push 하는 작업을 반복한다.
- 최종 리뷰가 완료되면 GitHub에서 merge pull request 한다. 원격 저장소에서 해당 브랜치의 변경사항이 main브랜치에 merge 된다. (작업
- 로컬 저장소에서 원격 저장소에 merge 된 내용을 가져오기 위해 pull한다.
//브랜치 생성
git switch -c rainbow
//파일 작업 후 추가
git add .
//파일 commit
git commit -m "add rainbow"
//작업된 파일이 있는 브랜치를 원격 저장소에 push
git push origin rainbow
//코드 리뷰 후 최종 merge 되면, 원격 저장소의 내용을 로컬로 가져오기 위해 pull
git switch main
git pull
아래 블로그들을 기반으로 정리한 내용입니다.
GitHub Flow
Git/GitHub 안내서 - GitHub Flow
subicura.com
우린 Git-flow를 사용하고 있어요 | 우아한형제들 기술블로그
{{item.name}} 안녕하세요. 우아한형제들 배민프론트개발팀에서 안드로이드 앱 개발을 하고 있는 나동호입니다. 오늘은 저희 안드로이드 파트에서 사용하고 있는 Git 브랜치 전략을 소개하려고 합
techblog.woowahan.com
Git Flow 개념 이해하기
Git으로 협업을 하는 것이 매우 좋다라고는 알고 있으나 실제로 서로 다른 그 사람들이 어떻게 각자 작성한 코드를 합치고 배포하는지가 궁금해 졌습니다. Git-flow 이해하기 Git-flow는 Git이 새롭게
ux.stories.pe.kr
'독서&그 외' 카테고리의 다른 글
'객체지향의 사실과 오해(역할, 책임, 협력 관점에서 본 객체지향)' 를 읽고 (0) | 2022.09.16 |
---|---|
git pull 지양하기 (0) | 2022.08.18 |
IntelliJ 단축키 for Mac OS (0) | 2022.08.16 |
'함께 자라기 (애자일로 가는 길)' 을 읽고 (0) | 2022.08.07 |
Apple 의 감성 반도체 M1 에 관하여 (0) | 2022.08.04 |
댓글