Pinterest-clone-playdata / pinterest-clone

1 stars 1 forks source link

# 3 git flow 정리 #5

Open pineplanet opened 2 years ago

pineplanet commented 2 years ago

git flow

git flow 는 특정한 기능이 아니라 전략적인 방법론으로 사용자들 사이에서 정해진 규칙을 말한다. git flow의 종류는 크게 3가지가 있다.

한 가지 작업을 함께 협업하는 개발자가 많아지고 개발 기간이 늘어날 수록 서로 작은 부분을 나눠서 진행 한 후 합치는 작업이 복잡해진다. 그리고 한 사람이 여러가지 작업을 병렬로 진행하게 되는데 병합 할 떄 또는 이슈 발생 시 어떤 룰이 정해지지 않은 경우 복구하기 위해 개발을 멈추게 되고, 전체 개발 흐름을 맞추기 어려워진다.

그래서 복잡한 개발 프로세스를 반영 할 수 있도록 규칙을 정하여 git 에서 처리 하는 것을 git flow 라고 한다.

git flow 의 종류와 각각의 특성

1. git flow

브랜치

develop -> feature -> develop -> release -> develop -> master(or main)

feature

단위 기능 개발하는 브랜치로 개발 완료하면 develop에 merge

브랜치 나오는 곳 : develop

브랜치 들어가는 곳 : develop

이름 지정 : master, develop, release-, hotfix-를 제외한 어떤 것이든 가능.

origin 이 아닌 개발자 repo 에만 존재

####### 참고 : git repository 구성

local repo 에서 작업 한 후 origin repo 에 push , origin 에서 push 한 브랜치를 upstream repo 로 pull request 생성,

pull request 를 검토 (코드 리뷰 ) 한 후 merge,

다시 새로운 작업을 할 때는 local 에서 upstream repo 를 pull

develop (메인)

개발 브랜치로 각자 작업한 기능을 합친다.

release

배포하기 전 master 브랜치로 합치기 전 QA 검사를 하기 위한 브랜치

브랜치 나오는 곳 : develop

브랜치 들어가는 곳 : develop, master

이름 지정 : release-*

hotfix

master 브랜치에서 버그 발생시 수정하기 위한 브랜치

브런치 나오는 곳 : master

브런치가 들어가는 곳 : develop, master

이름 지정 : hotfix-*

master(메인)

제품 배포 브랜치

git flow 설명

설명

  1. 일단 master 브랜치에서 시작.
  2. master -> develop 브랜치 생성한다. 개발자들은 이 develop 브랜치에서 개발을 진행한다.(공통기능? )
  3. 개발을 진행하다가 회원가입, 장바구니 등의 기능 구현이 필요할 경우 A개발자는 develop 브랜치에서 feature 브랜치를 하나 생성해서 회원가입 기능을 구현하고 B개발자도 develop 브랜치에서 feature 브랜치를 하나 생성해서 장바구니 기능을 구현한다.
  4. 각각의 기능 개발 구현이 완료 된 경우, 문제 이상 을 확인하고 feature 브랜치를 develop 으로 merge 한다.
  5. 모든 기능이 구현 완료 되고 develop으로 merge 된 경우, QA 를 위해 release 브랜치를 생성하여 보낸다. 그리고 QA(품질검사)를 하면서 보완점을 보완하고 버그를 픽스한다.
  6. 모든 것이 완료되면 이제 release 브랜치를 master 브랜치와 develop 브랜치로 보낸다. master 브랜치에서 버전추가를 위해 태그를 하나 생성하고 배포를 한다.
  7. 배포를 했는데 미처 발견하지 못한 버그가 있을 경우 hotfixes 브랜치를 만들어 긴급 수정 후 태그를 생성하고 바로 수정 배포를 한다. merge 된 feature, release, hotfix 브랜치는 삭제 한다.

git flow cheatsheet

https://danielkummer.github.io/git-flow-cheatsheet/index.ko_KR.html

시각화된 설명

https://learngitbranching.js.org/index.html?demo=&locale=ko

git flow + intellij plugin 사용

https://ozofweird.tistory.com/entry/Git-%EC%9B%90%EB%8D%B0%EC%9D%B4-Git-flow

설정
  1. git flow 설치

  2. intellij plugin git flow integration 설치

    사용
  3. git flow 초기화 (No gitflow로 뜨는 경우)

    1. 인텔리제이 하단 오른쪽 git flow 클릭-> init Repo 클릭
    2. 우리 branch 는 master 가 아니라 main 임!(or master 브랜치 생성하면 됨 )
    3. Use non-default configuration 체크
    4. branch name 을 main 으로 설정
  4. feature 브랜치 생성하기(개별 기능 개발할때 사용)

    1. develop branch 에서 개별 기능 개발을 위해 feature branch를 만들자!
    2. gitflow 클릭 한 다음 start feature 클릭,
    3. 이름을 입력한다.
    4. 입력한 이름의 브랜치가 생기고 현재 그 브랜치에 있는 것을 확인할 수 있다.
    5. 개발 완료 후 커밋 을 한다.
    6. 커밋 후에 gitflow 클릭하고 finish feature 를 클릭한다.
    7. 그러면 이제 해당 feature 는 develop 브랜치 (로컬)에 병합되고 feature 브랜치는 삭제 된다.
  5. release

    1. git flow 에서 release start 를 클릭해서 새 release 브랜치를 생성한다.
    2. 이 release 브랜치에서 테스트를 모두 마친 후에 메인 브랜치에 병합 하기 위해 finish release를 클릭한다.
    3. finish release 에는 tag 메시지를 입력하는데 배포시 브랜치 이름 대신 사용할 수 있다.
  6. pull request

    1. develop 에서 push
    2. pullrequest 확인 후 merge
    3. 브랜치 fetch 후 develop에서 땡겨 오기
  7. pull request 2

    1. 위와같이 release 한 후 develop에서 push 하는 방법 뿐만 아니라
    2. feauture branch 에서 바로 commit & push 로 main 에 pull request 할 수 도 있는데
    3. 이 두개를 합병 해서 바로 올리려고 하는 경우 git hub page의 pull request 에서 병합 하여 올릴 수 도 있다.
    4. pull requests 에서 새로운 new pull request 선택 후
    5. merge 방향 설정, feature -> develop 브랜치로
    6. Create pull request 선택 후 merge 진행

2. github flow

설명 git flow 는 github에서 사용하기에는 복잡 하다고 한다. 자동화가 되어있고, 룰이 단순 하다.

브랜치 특성

출처 모음