본문 바로가기
독서&그 외

Git-flow, GitHub-flow 정리

by winteringg 2022. 8. 16.

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 이 중요한 메인 브랜치이고, 나머지는 필요에 의해서 운영되는 브랜치이다.

Vincent Driessen의 블로그 참조

  1. 일단 master 브랜치에서 시작한다.
  2. 동일한 브랜치를 develop에도 생성한다. 개발자들은 이 develop 브랜치에서 개발을 진행한다.
  3. 개발을 진행하다가 회원가입, 장바구니 등의 기능 구현이 필요할 경우 A개발자는 develop 브랜치에서 feature 브랜치를 하나 생성해서 회원가입 기능을 구현하고 B개발자도 develop 브랜치에서 feature 브랜치를 하나 생성해서 장바구니 기능을 구현한다.
  4. 완료된 feature 브랜치는 검토를 거쳐 다시 develop 브랜치로 merge 된다.
  5. 모든 기능이 완료되면 develop 브랜치에서부터 release 브랜치를 생성한다.
  6. 그리고 QA(품질검사)를 하면서 보완점을 보완하고 버그를 수정한다.
  7. QA를 무사히 통과했다면 release 브랜치를 master와 develop 브랜치로 merge 한다.
  8. 마지막으로 master 브랜치에서 버전 추가를 위해 태그를 하나 생성하고 배포한다.
  9. 배포를 했는데 미처 발견하지 못한 버그가 있을 경우 hotfixes 브랜치를 만들어 긴급 수정 후 태그를 생성하고 바로 수정 배포한다.

GitHub-flow

 규모가 있는 개발의 경우 fork 와 PR(pull request) 을 활용한다.

출처 : treehouses.io

 fork 는 프로젝트를 통째로 외부로 복제해서 개발을 하는 방식이다. 저장소upstream, origin, local 이렇게 세 부분으로 구성된다. upstream (관례적 표현) 은 개발자들이 공유하는 최상위 저장소로 최신 소스코드가 저장되어 있는 원격 저장소이다. origin (관례적 표현)upstream 저장소fork 한 원격 개인 저장소이다. local 은 내 컴퓨터에 저장되어 있는 개인 저장소이다.

 local 저장소에서 각자 작업을 완료한 한 후 작업 브랜치를 origin 저장소에 push 한다. 그리고 Github에서 origin 저장소에 push한 브랜치를 upstream 저장소로 merge 하는 Pull Request (PR) 를 생성하고 코드 리뷰를 거친 후 merge 한다. 다시 새로운 작업을 할 때 local 저장소에서 upstream 저장소를 pull 한다.

  1. rainbow 브랜치를 만든다.
  2. rainbow 파일을 추가하고 commit 을 한다.
  3. rainbow 브랜치를 원격 저장소에 push한다.
  4. GitHub에서 푸시 된 rainbow 브랜치를 Pull Request (PR) 한다.
  5. GitHub에서 코드리뷰를 한다. 리뷰에 따라 코드를 수정하고 다시 push 하는 작업을 반복한다.
  6. 최종 리뷰가 완료되면 GitHub에서 merge pull request 한다. 원격 저장소에서 해당 브랜치의 변경사항이 main브랜치에 merge 된다. (작업 
  7. 로컬 저장소에서 원격 저장소에 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

 

댓글