카테고리 없음

[Git] Git Flow

Withlaw 2023. 5. 1. 19:47

1. Branch

- 브랜칭(branching)은 기존 개발 중인 메인 개발 코드를 그대로 복사하여 새로운 기능 개발을 메인 개발 코드를 건드리지 않고 할 수 있는 버전 관리 기법이다.

- main 브랜치에서만 작업을 하다가 새로운 기능 개발을 위해 feature 브랜치를 새로 생성하는 경우, 기존 main 브랜치에서의 작업은 유지하고 새로운 feature 브랜치에서 자유롭게 코드를 추가 및 삭제할 수 있다.

 

2. git switch

- HEAD: Git이 바라보는 곳

- switch: HEAD를 변경하는 작업

3. merge

4. Git flow

- 브랜칭 전략: 효율적인 개발 프로젝트 코드 관리를 위해 브랜치의 종류를 나눠서 관리하는 전략

- 가장 대표적인 브랜칭 전략이 git flow이다.

- 여러 버전을 배포하고 엄격한 버저닝이 필요한 프로젝트에서 유용하다.

- 대표적인 git flow로 Github flow, Gitlab flow 등이 있다.

- 아래는 git flow를 단순화한 방법이다.

- main: 프로덕션으로 언제든 사용자에게 출시할 수 있는 브랜치

  -> 기획했던 디자인, 기능 등이 완성되었고 클라이언트-서버-데이터베이스가 공개된 웹에서 정상적으로 통신할 수 있고 최소한의 보안(개발버전에서 사용하던 secret이나 유저 비밀번호 등이 노출x, 유저 정보를 조회하기 위해 인증 토큰&세션 등이 구비) 등의 기준 요건이 충족했을 때 main 브랜치로 배포한다.

- dev: 개발 중인 브랜치이다. CI/CD 파이프라인을 구축하여 dev 브랜치 또한 수시로 배포할 수 있다. 

- feature: 보조 브랜치. 기능 개발, 리팩토링, 문서작업, 오류 수정 등 다양한 작업을 기록하기 위한 브랜치. 

  -> feat/refactor/docs/fix/chore 등 다양한 prefix를 달아 사용함. (https://www.conventionalcommits.org/ko/v1.0.0/)

 

* merge 전략: 

  - rebase and merge: 커밋 기록을 전부 남기는 일반적인 방법

  - squash and merge: 커밋 기록을 깔끔하게 정리하는 방법