Git branch 전략
- main : 배포 전용 브랜치. develop 브랜치를 통해서 검증이 끝난 완성된 기능만을 merge 한다.
- develop : 개발 브랜치. feature 브랜치를 통해 작업한 내용이 반영되는 브랜치.
- feat/000 : develop 브랜치로부터 뻗어나온 브랜치. 기능 단위로 생성하며, 해당 기능 구현이 완료되면 삭제.
- feat 브랜치 네이밍 규칙 (자신의 로컬 브랜치 이름)
- 한 사람이 하나의 기능을 전담하는 경우. feat/기능명_닉네임
ex)
feat/post_42kim
- 기능이 더 세분화되는 경우. feat/기능명_닉네임
ex)
feat/base/TextComponent_42kim
Git 워크 플로우
- 데브코스 organization에
FEDC1_프로젝트명(영문)_팀명
레포지토리 생성. main, develop 브랜치 생성 등 초기화 진행. 팀원들은 자신의 로컬에 해당 원격 레포지토리를 clone 한다. 원격 레포 명칭은 origin으로 통일하자.
- 새로운 기능 'abc'의 개발이 필요하다면 로컬 레포지토리에서 develop 브랜치를 기반으로 'feat 브랜치 네이밍 규칙을 따라 브랜치를 생성한다. 항상 새로 브랜치를 생성하기 전에는 로컬 develop 브랜치를 remote의 develop 브랜치에 맞게 최신화 시키자. (git pull origin develop)
(로컬의 develop 브랜치에 위치한 상태에서)
git checkout -b feat/abc_nickname
- 열심히 작업한다. (최대한 기능 단위로 커밋을 잘게 쪼갤 수 있도록 노력한다!)
- 만약 작업 중에 다른 팀원에 의해 origin의 develop 브랜치가 변경되는 일이 생기면(eslint 룰 추가, 버그 수정 등등) 자신이 작업 중인 브랜치에 git pull origin develop 을 해서 변경 사항을 최신화 시킨 뒤에 작업을 이어간다.
- 작업이 완료되면, 자신이 작업하던 브랜치명과 동일한 브랜치를 origin에 생성하며 push 한다.
git push origin feat/abc_nickname
🚨🚨술 또는 잠에 취해 main 또는 develop 브랜치로 push 하지 않도록 조심한다!!🚨🚨
- 템플릿에 맞춰 Pull Request를 작성한다. (자신이 push한
feat/abc_nickname
브랜치를 develop 브랜치로)
- 팀원들의 리뷰를 기다린다.
- 리뷰가 끝나고 성공적으로 merge가 되었다면 로컬과 origin에서 작업했던 브랜치를 삭제하자
- 로컬 브랜치 삭제 :
git branch -d feat/abc_nickname
- 원격 브랜치 삭제 :
git push origin --delete feat/abc_nickname
🙋♀️헷갈린다면 SourceTree나 Fork 같은 GUI 툴을 적극 활용해보아요🙋♀️