Git Flow 방식이란?
- Git에서 제안하는 프로젝트 관리방법
- 주기적으로 배포를 해야하는 프로젝트에는 적합하지만, 브랜치가 많아 복잡하고 어떤 프로젝트에 따라서는 몇몇 브랜치가 애매한 포지션을 가질 수 있다.
- 브렌치를 크게 4가지로 나누어 개발하는 전략이다.
메인 브랜치 (Main branch)
- 가장 중심이 되는
master
와 develop
master
: 배포 가능한 상태만을 관리하는 브랜치
deveop
: 다음에 배포할 것을 개발하는 브랜치
- 통합 브랜치의 역할을 하며, 평소에는 이 브랜치를 기반으로 개발을 진행한다.
피처 브랜치 또는 토픽 브랜치 (Feature branch, Topic branch)
- 보조 브랜치
- 기능을 개발하는 브랜치,
develop 브랜치
로부터 분기되었다.
feature 브랜치
는 그 기능을 완성할 때까지 유지하고, 완성된 후 다음 배포때 확실히 넣게 된다면 develop브랜치로 merge 한다.
릴리스 브랜치 (Release branch)
develop 브랜치
에 이번 버전에 포함되는 기능이 merge
되었다면 QA(소프트웨어 품질 개선)를 위해 develop 브랜치
에서 release 브랜치
를 생성한다.
- 배포를 위한 최종적인 버그 수정 등의 개발을 수행
핫픽스 브랜치 (HotFix branch)
- 배포한 버전에서 긴급히 수정이 필요한 경우
master 브랜치
에서 분기한다.
- 버그를 잡는 사람이 작업하는 중에도 다른 사람들은
develop 브랜치
에서 각자의 작업을 이어갈 수 있다.
maerge
된 Feature, Release, HotFit 브렌치
는 삭제한다.
GitHub Flow 방식이란
Git-Flow 방식
이 GitHub에서 사용하기에 복잡하여 나온 브랜칭 전략
- 흐름과 role이 단순하다.
master 브랜치
에 대한 role만 정확하다면 나머지 브랜치들에 대해서는 관여하지 않는다.
hotfix브랜치
와 feature브랜치
를 구분하지 않는다.
- CI와 배포가 자동화 되어있는 프로젝트에 유용
GitHub Flow 방식 사용법
- 브랜치 생성
- 파일 추가 및 커밋
- 브랜치를 원격 저장소에 push
- GitHub에서 push된 브랜치를 Pull Request 한다.
- GitHub에서 코드리뷰 진행
- GitHub에서 Merge
- 로컬 저장소에서 원격 저장소에 merge된 내용을 pull
- 완료
// git init, useremail, username, github repository 설정을 완료한 후 진행
git switch -c 브랜치이름 (브랜치 생성)
git switch 브랜치이름 (브랜치 선택)
git add . (파일 추가)
git commit -m "작업내용" (커밋)
git push origin 브랜치이름 (원격저장소에 push)
---- GitHub에서 진행 완료 후 ----
git switch master (merge된 내용을 pull 받을 저장소 선택)
git pull origin master
GitHub Flow 그 외 명령어
git branch (현재 선택된 브랜치와 전체 브랜치 목록 출력)
git branch -D 브랜치이름 (브랜치 삭제 (현재 선택된 브랜치는 삭제가 불가능하다.))