Prerequsite
Git 설치
- 설치 확인 명령어 : git
- os에 맞게 git 설치 : https://git-scm.com/
Git flow 설치
- git flow는 git의 브랜치 전략을 도와주는 툴
- 설치 확인 명령어 : git flow
- 설치 방법 : https://github.com/petervanderdoes/gitflow-avh/wiki/Installation
- mac은…
brew install git-flow-avh
Github ssh 설정
- github은 https와 ssh 프로토콜 모두 지원
- 각 장단점이 존재 : https://git-scm.com/book/ko/v2/Git-서버-프로토콜
- 아래의 명령어를 실행하여 github에 등록
# ssh key 생성(이미 키가 있으면 생략)
mkdir ~/.ssh
ssh-keygen -t rsa -C "${github_id}@github.com"
# ssh publick key 복사
cat ~/.ssh/id_rsa.pub
# 복사한 키를 https://github.com/settings/ssh 에 등록한다.
- github ssh 포트가 다르면 추가 설정이 필요
- ~/.ssh/config 파일에 아래 내용을 추가한다. (없으면 파일 생성)
Host github.com
User git
Hostname github.com
IdentityFile ~/.ssh/id_rsa
Port 20022
Git flow 전략
Branch별 요약
- master branch : 배포되었거나 배포될 소스가 저장되는 브랜치
- develop branch : 다음 배포를 위해서 개발을 진행하는 브랜치
- 여러명의 개발자가 공유하며 개발을 진행하는 브랜치
- 로컬 브랜치에서 개발이 완료되면 완료된 소스를 develop 브랜치에 푸시하거나 PR을 보내 리뷰후 merge 하는것으로 개발이 진행된다.
- feature branch : 각 개발자에 의해 기능 단위 개발이 진행되는 브랜치
- 로컬에서 개발을 진행하는 브랜치
- develop 브랜치에 merge된다.
- hotfixs branch : 배포 버전에 생긴 문제로 긴급한 트러블슈팅이 필요할 때 개발이 진행되는 브랜치
- master 브랜치에서 생성
- master 브랜치로 직접 merge
- develop 브랜치에도 적용 필요
- release branch : 내부적으로 배포할 준비가 되었다고 생각되는 소스가 저장되는 브랜치
- QA에서 테스트를 진행할 브랜치
- QA중 버그발생시, 바로 적용. develop 브랜치에도 적용 필요
- 추가 기능개발을 위해 develop 브랜치로 넘어가서는 안된다. 추가기능은 다음 release에 적용필요
Start Project
Clone Project from github
- 소스코드 Git Clone
- 프로젝트 디렉토리로 이동
git flow init
- 로컬에 master 브랜치와 develop 브랜치가 생성된 상태에서 진행한다.
- git flow init 명령어를 실행하면 아래와 같이 설정을 확인하는 대화 모드로 진입한다.
- 모든 설정을 default로 사용한다.(feature, release, hotfix, …)
- bugfix, support branch는 최근 git flow에 추가된 브랜치이며 git flow edition/version에 따라 없을수도 있고 실험적인 기능이므로 사용하지 않음.
- Mac에서는
Cmd
+Option
+f
로 팝업창 생성
$ git flow init
Which branch should be used for bringing forth production releases?
- master
Branch name for production releases: [master]
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Bugfix branches? [bugfix/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
Git flow 명령어
알림
MYFEATURE과 RELEASE를 branch이름
ex) feature/test123 → FEATURE = test123
- 새 기능(feature) 시작하기 :
git flow feature start MYFEATURE
- 기능 완료 :
git flow feature finish MYFEATURE
- 기능을 게시(publish) :
git flow feature publish MYFEATURE
- 게시된 기능 가져오기 :
git flow feature pull origin MYFEATURE
- 릴리즈 시작 :
git flow release start RELEASE [BASE]
- 릴리즈 완료 :
git flow release finish RELEASE
- 핫픽스 시작 :
git flow hotfix start VERSION [BASENAME]
- 핫픽스 완료 :
git flow hotfix finish VERSION