[Git] Git Flow
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: 커밋 기록을 깔끔하게 정리하는 방법