[Git/GitHub] GitHub Issue & Pull Request(PR) Convention
프로젝트를 하면서 팀원들이 참고하기 편하도록 정리해두었던 컨벤션을 업로드한다.
❇️ Issue Convention
- title: 명확하고 간결하게 작성
- description
- 새로운 기능 추가: 필요한 작업을 체크박스(task list)를 적극 활용해 나타낸다.
- 버그 또는 오류: 이슈의 문제 설명, 문제 재현 단계, 기대 결과, 실제 결과, 스크린샷을 첨부해 자세히 작성한다.
- Assignees: 해당 이슈를 책임지고 처리할 담당자
- Labels: 이슈의 유형, 우선 순위, 환경 등을 구분
- Issue 라벨 목록
- 유형 라벨
라벨 이름 설명 feature 새로운 기능 추가 enhancement 기능 개선 또는 향상 bug 버그 또는 오류 question 질문이나 논의가 필요한 사항 wontfix 해결할 계획이 없는 이슈 duplicate 이미 다른 이슈로 보고된 중복 이슈 invalid 유효하지 않거나 잘못된 이슈 refactor 코드 리팩토링 documentation 문서화 - 우선 순위 라벨
라벨 이름 설명 priority:high 높은 우선순위 priority:medium 중간 우선순위 priority:low 낮은 우선순위 - 환경 라벨
라벨 이름 설명 frontend 프론트엔드 backend 백엔드 database 데이터베이스
- 유형 라벨
- Issue 라벨 목록
- Projects: 현재 프로젝트로 지정
✏️ Issue 생성 예시
❇️ PR Convention
- title: [#관련이슈번호] 제목 형식으로 명확하고 간결하게 작성
- description: PR 템플릿 양식에 맞게 작성
- PR 템플릿 양식
### 설명 ### 관련 이슈 Closes ### 변경 유형 - [ ] 버그 수정 - [ ] 새로운 기능 - [ ] 코드 개선 - [ ] 문서 업데이트 ### 체크리스트 - [ ] 이 프로젝트의 코딩 스타일 가이드를 준수했습니다. - [ ] 제가 작성한 코드를 스스로 리뷰했습니다. - [ ] 이해하기 어려운 부분에 주석을 추가했습니다. - [ ] 문서에 변경 사항을 반영했습니다. - [ ] 새로운 경고를 생성하지 않습니다. - [ ] 변경 사항이 효과적임을 증명하는 테스트를 추가했습니다. - [ ] 새로운 기능이나 수정 사항이 기존 테스트와 충돌하지 않음을 확인했습니다. ### 추가 설명
- PR 템플릿 작성 예시
### 설명 로그인 기능을 구현했습니다. 이 기능에는 로그인 폼과 인증 로직이 포함됩니다. ### 관련 이슈 Closes #1 ### 변경 유형 - [ ] 버그 수정 - [x] 새로운 기능 - [ ] 코드 개선 - [ ] 문서 업데이트 ### 체크리스트 - [x] 이 프로젝트의 코딩 스타일 가이드를 준수했습니다. - [x] 제가 작성한 코드를 스스로 리뷰했습니다. - [x] 이해하기 어려운 부분에 주석을 추가했습니다. - [x] 문서에 변경 사항을 반영했습니다. - [x] 새로운 경고를 생성하지 않습니다. - [x] 변경 사항이 효과적임을 증명하는 테스트를 추가했습니다. - [x] 새로운 기능이나 수정 사항이 기존 테스트와 충돌하지 않음을 확인했습니다. ### 추가 설명 - 로그인 폼은 이메일과 비밀번호 입력 필드로 구성됩니다. - 인증 로직은 JWT를 사용하여 구현되었습니다. - 추가로 필요한 기능이나 수정 사항이 있으면 알려주세요.
- PR 템플릿 양식
- Reviewers: PR을 리뷰하고 피드백을 제공하며, 변경 사항을 승인하거나 요청할 수 있는 담당자
- 코드 리뷰와 피드백 제공
- 승인/거부: 리뷰어는 PR을 승인하거나 수정이 필요하다 판단되면 변경을 요청할 수 있음
- 병합 요청: 리뷰어가 PR을 승인하면 PR을 메인 브랜치에 병합할 수 있음
- Assignees: 해당 PR을 책임지고 처리할 담당자
- Labels: PR의 유형, 우선 순위, 상태 등을 구분
- PR 라벨 목록
- 유형 라벨
라벨 이름 설명 feature 새로운 기능 추가 bugfix 버그 수정 refactor 코드 리팩토링을 포함 documentation 문서 업데이트를 포함 - 우선 순위 라벨
라벨 이름 설명 priority:high 높은 우선순위 priority:medium 중간 우선순위 priority:low 낮은 우선순위 - 상태 라벨
라벨 이름 설명 ready for review 리뷰가 준비된 상태 in review 현재 리뷰 중인 상태 awaiting changes 리뷰어의 피드백에 따라 수정이 필요한 상태 approved 승인된 상태
- 유형 라벨
- PR 라벨 목록
- Projects: 현재 프로젝트로 지정
💡 PR 생성 시 자동으로 PR 템플릿 양식 지정하는 방법
- 프로젝트에 .github 디렉토리 생성 후 pull_request_template.md 파일 생성
- pull_request_template.md 파일 내부에 템플릿 작성 후 push하면 끝!
✏️ PR 생성 절차
1. 기능 구현에 필요한 작업은 개인 브랜치에서 진행하며 Commit Convention 형식을 지켜 Commit 후 원격 저장소에 Push 한다.
2. 기능이 완전히 구현되었을 때 GitHub에서 PR을 생성한다.
3. base 브랜치(develop 브랜치)와 compare 브랜치(개인 브랜치)를 선택한 뒤, PR Convention 형식을 지켜 작성한다.
4. 팀원(Reviewers)들이 PR을 리뷰하고 피드백한다. 필요 시 추가 커밋을 통해 PR을 업데이트한다.
5. 리뷰가 완료되고 승인되면 Merge Pull Request 버튼을 눌러 PR을 병합한다.
- PR 내용에 Closes #이슈번호 키워드가 포함되어 있어 병합 시 해당 이슈가 자동으로 닫힌다.
6. 병합이 완료된 후 Delete branch 버튼을 누르면 원격 저장소에서 해당 브랜치가 삭제된다. 로컬 저장소에서도 직접 해당 브랜치를 삭제한 뒤, 새로운 브랜치를 만들어 작업하도록 한다.