깃 플로우의 사용법을 익히기 전에 깃 브랜치의 5가지 종류(main, develop, feature, release, hotfix)의 역할을 잘 모른다면 👉 [깃 플로우] 깃 브랜치의 5가지 종류의 역할 설명 (main, develop, feature, release, hotfix)
git flow 시작전
1. 리포지토리 클론하기
git clone <주소>
2. 클론 잘되었는지 확인하기
원격 리포지토리의 주소가 맞는지 확인하자.
git remote -v
3. 해당 리포지토리 안으로 들어가기
cd <리포지토리 이름>
4. git flow 설치하기
macOS: Homebrew
brew install git-flow-avh
macOS: Macports
port install git-flow-avh
Linux
apt-get install git-flow
Windows (Cygwin)
wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash
git flow 적용: 시작하기
1. git flow 시작하기
git flow init
2. 브랜치 이름 설정하기
각 상황에 어떤 브랜치 이름을 쓸 것인지 설정하는 단계. 기본값을 설정된 브랜치 이름을 바꿔주고 싶으면 원하는 브랜치 이름을 작성 후 엔터키로 다음단계로 넘어가면 된다.
production release(배포)단계에서 master로 설정된 브랜치 이름을 main으로 바꿔주기
Branch name for production releases: [master] main

3. 현재 브랜치 확인 작업
git flow 브랜치 이름 설정을 끝내면 자동으로 브랜치 main과 develop이 생성 되고 develop이 현재 브랜치로 선택된다.
git branch

git flow 적용: 기능 개발 (feature 브랜치)
1. feature 브랜치 생성
새로운 기능 개발이 필요한 경우 develop 브랜치에서 파생되는 feature 브랜치에서 개발한다. feature 브랜치의 이름은 일반적으로 feature/기능이름으로 정한다. 예) feature/login
git flow feature start <feature 브랜치에서 개발할 기능 이름>
git flow feature start login
2. 현재 브랜치 확인 작업
feature 브랜치 생성을 끝내면 자동으로 브랜치 feature/기능이름이 생성 되고 현재 브랜치로 선택된다.
git branch

3. 커밋하기
해당 브랜치에서 기능개발 작업을 완료한후 업데이트된 코드를 commit 한다.
git add <파일이름>
git commit -m <커밋 메세지>
git status
4. develop 브랜치에 병합해주기
기능 개발이 완료되면 feature 브랜치를 닫아준다. feature 브랜치를 닫으면 feature 브랜치가 develop 브랜치에 병합되고 feature 브랜치는 자동으로 된다. 현재 브랜치는 자동으로 develop 브랜치가 된다.
주의점: 브랜치를 병합하기 전에는 반드시 모든 파일들이 커밋되어야 한다. (브랜치를 닫아주기 전에 git status로 모든 파일이 커밋되었는지 확인해보자)
git flow feature finish <feature 브랜치에서 개발할 기능 이름>
git flow feature finish login
git flow 적용: 배포하기 (release 브랜치)
1. release 브랜치를 생성
사용자에게 배포를 준비하기 위해 release 브랜치를 생성해준다. 이때 버전 넘버링을 해주는데 초기 버전은 v0.0.1부터 시작해준다.
버전 넘버링이 궁금하다면 이 포스팅을 확인해보자 👉 [웹개발, 배포] 소프트웨어 버전 넘버(semantic version) 간단 설명
git flow release start <버전 넘버링>
git flow release start v0.0.1
2. 출시 준비 작업하기
release 브랜치에서 출시 준비 작업을 진행한다 (버그 수정, 설명서 생성, 테스트)
3. release 브랜치를 닫기
출시 준비가 완료되면 release 브랜치를 닫아준다. 닫아준 release 브랜치는 main 브랜치, develop 브랜치에 병합되고 release 브랜치는 자동으로 삭제된다.
git flow release finish <버전 넘버링>
git flow release finish v0.0.1
이때 세가지 창이 뜨게 되는데 메세지를 작성해준 후 닫아준다:
1) release 브랜치를 main, develop 브랜치에 병합해줄때 메세지를 작성하는 창

2) 버전 태그에 대해서 메세지를 작성하는 창

git flow 적용: remote repo에 push하기
feature 브랜치에서 기능 개발과 release 브랜치에서 출시 준비 작업을 끝내면 원격 리포지토리에 다음 세가지를 push해준다:
1) develop 브랜치 2) main 브랜치 3) tag
1. 현재 브랜치 확인 작업
feature나 release 브랜치에서 작업을 하고 닫아주면 자동으로 feature, release 브랜치가 삭제되고 develop 브랜치에 병합이 된다. 그 이후에는 main과 develop 브랜치만이 남아있으며 현재 브랜치는 자동으로 develop으로 선택되어진다.
git branch
2. develop 브랜치를 remote repo에 push하기
내 로컬 리포에 있는 develop 브랜치를 원격 리포에 push해준다. 이때 원격 리포에 develop 브랜치가 없다면 push할때 upstream이라는 플래그를 사용해준다.
원격 리포에 develop 브랜치가 없을때
git push -u origin develop
원격 리포에 develop 브랜치가 있을때
git push origin develop
3. 현재 브랜치를 main으로 변경
main 브랜치를 remote repo에 push해주기 전에 현재 브랜치가 develop이라면 main으로 먼저 switch 해준다.
git switch main
4. main 브랜치를 remote repo에 push하기
git push origin main
5. tag도 remote repo에 push해준다
release 브랜치에서 설정해줬던 버전 넘버링도 함께 push해준다.
# 현재 git tag 확인
git tag
# 현재 git tag 원격 리포지토리에 push하기
git push --tags
6. 로컬 리포지토리에 push가 잘 되었나 확인
main 브랜치, develop 브랜치에 업데이트한 코드가 있는지 확인하기. 푸시한 tag가 있는지 확인하기.

Reference
'Git · GitHub' 카테고리의 다른 글
| [깃] merge conflict란? 병합할때 발생하는 merge conflict 해결하기 (0) | 2022.04.06 |
|---|---|
| [깃] git issue, branch, merge 정리 (0) | 2022.04.06 |
| [깃 플로우] 깃 브랜치의 5가지 종류의 역할 설명 (main, develop, feature, release, hotfix) (0) | 2022.04.04 |
| [깃/깃허브] 깃허브에서 깃 플로우(git flow) 보고싶을때 (0) | 2022.04.01 |
| [깃/한줄정리] git push origin main에서 origin이란? (0) | 2022.04.01 |
댓글