Conventions - EnvEduPNU/EnvEdu_Server GitHub Wiki
Branches
main
: 실제로 작동하고 있는 버전, CI/CD 대상 브랜치
develop
: 개발 단계에서 각 feature 브랜치가 합쳐지는 브랜치, 각 feature에서 날린 PR은 최소 한 명의 리뷰 후 merge 될 수 있음
feature
: 각 기능 별로 생성하는 브랜치, develop에 merge 후 삭제, ex. feature/#{issue number}/{feature name}/{collaborator name}
Flow
- 각 collaborator는 fork로 분기해 작업
- 매주 금요일 develop 브랜치를 main 브랜치로 merge, 1주일 동안 자신이 진행할 개발 일정 backlog 작성 및 각 backlog 이슈에 해당하는 브랜치 생성
- 매일 오후 9시에 collaborator는 feature 브랜치에서 develop 브랜치로 전송한 PR을 리뷰하고 승인하는 scrum 진행
- develop 브랜치가 업데이트 되면 fetch-rebase 이용해 local 저장소 업데이트
- 참고 : 참고
Commit
- ex. #{issue number}-{type}/{commit message}
- type
feat
: 기능을 추가한 경우
style
: 변수 이름 변경, 줄 간격 변경 등의 코드의 스타일을 변경하는 경우
fix
: 버그를 수정한 경우
refactor
: 리팩토링을 진행한 경우
test
: 테스트 코드 작성 및 테스트 코드를 수정한 경우
rm
: 파일을 제거한 경우
mv
: 파일의 위치를 변경한 경우
env
: 프로젝트 환경 설정과 관련된 경우
doc
: 문서와 관련된 변경
add
: 코드 또는 파일을 추가하는 경우
rn
: 클래스, 파일 등의 이름을 변경하는 경우
PR
feature
-> develop
- title: feature 브랜치 이름
- content:
- 구현 및 수정한 기능 요약
- 작업하며 발생했던 문제
- 문제의 원인과 해결 방법
develop
-> main
- title: 현재 날짜(yyyy/mm/dd)
- content: 추가 및 수정한 기능 - {담당자 username}
- 편의상 local -> remote -> upstream 과정을 거치지 않고 local에서 바로 git push upstream ${branch_name} 으로 바로 upstream으로 push
- 해당 명령어 수행 시 upstream에 동일한 이름의 브랜치 생성됨
- 해당 방법을 통해 upstream github에 표시되는 불필요한 commit을 없앨 수 있음
Guide
- EnvEduPNU에서 본인 github으로 fork
- 본인 PC에서 git clone https://github.com/${본인 레포지토리}/${프로젝트}.git ex. git clone https://github.com/201724554/EnvEdu_Server.git
- 본인 PC에서 git add remote -t develop upstream https://github.com/EnvEduPNU/${프로젝트}.git
- 작업 시, EnvEduPNU의 프로젝트 레포지토리에 이슈 생성
- 로컬에서 main 브랜치에 위치한 상태로 git checkout -b feature/${생성한 이슈 번호}/${작업에 대한 간단한 묘사(CamelCase)/${본인 깃허브 아이디} 실행해 브랜치 생성
- 작업, 커밋 단위 크지 않게
- git push upstream ${생성한 브랜치 이름}
- PR 날리기(#PR 참고)
- 리뷰 후 develop 브랜치로 merge
- merge 완료 되면 로컬에서 git switch main 실행해 main 브랜치로 복귀
- git fetch upstream develop 실행해 develop 브랜치에 merge된 내용 가져오기
- git rebase upstream/develop으로 로컬의 develop 브랜치와 upstream develop 동기화
- git branch -D ${생성한 브랜치 이름}으로 작업 브랜치 제거
- 4로 이동해 반복