git & github

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