gitflow 공부
1. gitFlow?
- 깃플로우(git-flow) 전략은 소프트웨어의 소스코드를 관리하고 출시하기 위한 ‘브랜치 관리 전략(branch management strategy)’중 하나
- git-flow 전략외에도 github flow 와 gitlab flow 전략등이 있음 - 각자에게 맞는 전략을 선택해서 사용하는게 가장 중요
-항상 유지되는 메인브렌치(master, develop)와 일정 기간 유지되는 보조 브랜치(feature, realease, hotfix)로 나누어짐
- Master - 제품으로 출시 되는 브랜치
- Develop - 다음 출시 버전을 개발하는 브랜치
- Feature - 기능을 개발하는 브랜치
- Realease - 이번 출시 버전을 준비하는 브랜치
- Hotfix - 출시 버전에서 발생한 버그를 수정하는 브랜치
2. 원격 저장소 생성
3. 원격 저장소와 로컬 저장소 연동
원격저장소와 연결할 로컬 저장소(폴더)을 만들고 연동
4. 파일 생성 및 마스터 커밋
로컬 저장소에 테스트용 파일을 만들고 커밋하여 연동 테스트
- 정상적으로 연동된것을 확인
5. develop 브랜치 생성 및 커밋 테스트
-로컬 저장소에 develop 브랜치 생성 & 원격 저장소에 develop 브랜치 생성 및 두 브랜치 연동
- develop 브랜치에서 파일을 수정하고 commit
- develop 브랜치 생성 및 원격저장소 확인
6. 기능추가 브랜치 feature 브랜치 추가 및 develop브랜치와 merge
1). pull request를 통한 merge방식
- feature-some 이라는 브랜치를 만들어서 파일을 수정하고 커밋
(앞서 develop는 로컬과 원격 브랜치를 둘다 만들어서 연결해줬지만 이번에는 로컬에 브랜치를 만들고 해당 브랜치는 원격에 동일하게 만드는 방식을 택함)
- feature-some 브랜치 생성 확인
- compare & pull request을 버튼을 클릭하면 pull request를 작성할 수 있다.
여기서 feature-some을 develop에 반영하도록 상단의 selectbox를 선택하고 관련된 내용을 작성한다.
- 작성하면 pull reqest가 등록되고 저장소에 대한 권한이 있는 경우 아래와 같이 merge pull reqeust라는 버튼을 통해서 원격저장소에서 merge를 진행할 수 있다.
- merge이후에는 해당 브랜치를 삭제할 수 있다.
- 원격저장소 feature-some이 삭제된 모습들
- 원격 저장소 develop merge되었다는 내용을 확인 할수 있다.
- 원격저장소와 로컬저장소을 맞추기 위해서 git pull 진행
- 로컬의 develop 브랜치가 반영된 모습
2). 로컬에서 merge후 반영 방식
- develop 브랜치에서 feature-some2 브랜치는 만듬
- feature-some2 브랜치에서 파일을 수정하고 커밋 및 원격 저장소에 반영
- develop 브랜치로 이동 후 merge 진행
-develop 브랜치를 push
-develop 브랜치와 feature-some2가 정상적으로 merge됨
- 기능 추가 브랜치의 경우 기능 개발이 필요할때 브랜치를 만들었다가 개발이 끝나면 삭제해야한다.
- 로컬 저장소 브랜치 삭제
-원격 저장소 브랜치 삭제
- 삭제가 정상적으로 진행됨
7. release 브랜치 생성 및 master, develop과 merge
-release-1.0 브랜치를 생성
- 파일 수정
-commit
-원격 저장소로 push
- release-1.0 브랜치와 master merge
- release-1.0 브랜치와 develop merge
-release-1.0 로컬, 원격 브랜치 삭제
8. hotfix 브랜치 생성 및 master, develop과 merge
hotfix-some 브랜치 생성
- 파일수정
-commit
-push
- hotfix-some 브랜치와 master merge
- hotfix-some 브랜치와 develop merge
- hotfix-some 브랜치 삭제
9. 실습 git flow
실습에서 master, develop, hotfix-some, release-1.0, feature-some, feature-some2 브랜치를 사용했습니다.
실습의 gitflow를 그림으로 하면 아래와 같습니다.
Reference
nvie.com/posts/a-successful-git-branching-model/
생활코딩: www.youtube.com/watch?v=v2cixb4Zh6Q