🐈‍⬛ Git | GitHub

[Git/GitHub] GitHub Issue & Pull Request(PR) Convention

별이⭐ 2024. 9. 25. 23:37
프로젝트를 하면서 팀원들이 참고하기 편하도록 정리해두었던 컨벤션을 업로드한다.

❇️ Issue Convention

  1. title: 명확하고 간결하게 작성
  2. description
    • 새로운 기능 추가: 필요한 작업을 체크박스(task list)를 적극 활용해 나타낸다.
    • 버그 또는 오류: 이슈의 문제 설명, 문제 재현 단계, 기대 결과, 실제 결과, 스크린샷을 첨부해 자세히 작성한다.
  3. Assignees: 해당 이슈를 책임지고 처리할 담당자
  4. Labels: 이슈의 유형, 우선 순위, 환경 등을 구분
    • Issue 라벨 목록
      • 유형 라벨 
        라벨 이름 설명
        feature 새로운 기능 추가
        enhancement 기능 개선 또는 향상
        bug 버그 또는 오류
        question 질문이나 논의가 필요한 사항
        wontfix 해결할 계획이 없는 이슈
        duplicate 이미 다른 이슈로 보고된 중복 이슈
        invalid 유효하지 않거나 잘못된 이슈
        refactor 코드 리팩토링
        documentation 문서화
      • 우선 순위 라벨
        라벨 이름 설명
        priority:high 높은 우선순위
        priority:medium 중간 우선순위
        priority:low 낮은 우선순위
      • 환경 라벨
        라벨 이름 설명
        frontend 프론트엔드
        backend 백엔드
        database 데이터베이스
  5. Projects: 현재 프로젝트로 지정

 

✏️ Issue 생성 예시

 

 

❇️ PR Convention

  1. title: [#관련이슈번호] 제목 형식으로 명확하고 간결하게 작성
  2. description: PR 템플릿 양식에 맞게 작성
    • PR 템플릿 양식
      ### 설명
      
      
      ### 관련 이슈
      Closes 
      
      ### 변경 유형
      - [ ] 버그 수정
      - [ ] 새로운 기능
      - [ ] 코드 개선
      - [ ] 문서 업데이트
      
      ### 체크리스트
      - [ ] 이 프로젝트의 코딩 스타일 가이드를 준수했습니다.
      - [ ] 제가 작성한 코드를 스스로 리뷰했습니다.
      - [ ] 이해하기 어려운 부분에 주석을 추가했습니다.
      - [ ] 문서에 변경 사항을 반영했습니다.
      - [ ] 새로운 경고를 생성하지 않습니다.
      - [ ] 변경 사항이 효과적임을 증명하는 테스트를 추가했습니다.
      - [ ] 새로운 기능이나 수정 사항이 기존 테스트와 충돌하지 않음을 확인했습니다.
      
      ### 추가 설명
    • PR 템플릿 작성 예시
      ### 설명
      로그인 기능을 구현했습니다. 이 기능에는 로그인 폼과 인증 로직이 포함됩니다.
      
      ### 관련 이슈
      Closes #1
      
      ### 변경 유형
      - [ ] 버그 수정
      - [x] 새로운 기능
      - [ ] 코드 개선
      - [ ] 문서 업데이트
      
      ### 체크리스트
      - [x] 이 프로젝트의 코딩 스타일 가이드를 준수했습니다.
      - [x] 제가 작성한 코드를 스스로 리뷰했습니다.
      - [x] 이해하기 어려운 부분에 주석을 추가했습니다.
      - [x] 문서에 변경 사항을 반영했습니다.
      - [x] 새로운 경고를 생성하지 않습니다.
      - [x] 변경 사항이 효과적임을 증명하는 테스트를 추가했습니다.
      - [x] 새로운 기능이나 수정 사항이 기존 테스트와 충돌하지 않음을 확인했습니다.
      
      ### 추가 설명
      - 로그인 폼은 이메일과 비밀번호 입력 필드로 구성됩니다.
      - 인증 로직은 JWT를 사용하여 구현되었습니다.
      - 추가로 필요한 기능이나 수정 사항이 있으면 알려주세요.
  3. Reviewers: PR을 리뷰하고 피드백을 제공하며, 변경 사항을 승인하거나 요청할 수 있는 담당자
    1. 코드 리뷰와 피드백 제공
    2. 승인/거부: 리뷰어는 PR을 승인하거나 수정이 필요하다 판단되면 변경을 요청할 수 있음
    3. 병합 요청: 리뷰어가 PR을 승인하면 PR을 메인 브랜치에 병합할 수 있음
  4. Assignees: 해당 PR을 책임지고 처리할 담당자
  5. Labels: PR의 유형, 우선 순위, 상태 등을 구분
    • PR 라벨 목록
      • 유형 라벨
        라벨 이름 설명
        feature 새로운 기능 추가
        bugfix 버그 수정
        refactor 코드 리팩토링을 포함
        documentation 문서 업데이트를 포함
      • 우선 순위 라벨
        라벨 이름 설명
        priority:high 높은 우선순위
        priority:medium 중간 우선순위
        priority:low 낮은 우선순위
      • 상태 라벨
        라벨 이름 설명
        ready for review 리뷰가 준비된 상태
        in review 현재 리뷰 중인 상태
        awaiting changes 리뷰어의 피드백에 따라 수정이 필요한 상태
        approved 승인된 상태
  6. Projects: 현재 프로젝트로 지정

💡 PR 생성 시 자동으로 PR 템플릿 양식 지정하는 방법

  1. 프로젝트에 .github 디렉토리 생성 후 pull_request_template.md 파일 생성
  2. pull_request_template.md 파일 내부에 템플릿 작성 후 push하면 끝!

 

✏️ PR 생성 절차

1. 기능 구현에 필요한 작업은 개인 브랜치에서 진행하며 Commit Convention 형식을 지켜 Commit 후 원격 저장소에 Push 한다.

인텔리제이에서 Commit 메시지 작성
GitHub에서 커밋 내역을 확인할 수 있다.
커밋이 관련 Issue에 자동으로 추가된 것을 볼 수 있다.

 

2. 기능이 완전히 구현되었을 때 GitHub에서 PR을 생성한다.

GitHub에서 PR 탭으로 가서 PR을 생성한다.
개인 브랜치에서 작업한 Commit들이 나타나있다.

 

3. base 브랜치(develop 브랜치)와 compare 브랜치(개인 브랜치)를 선택한 뒤, PR Convention 형식을 지켜 작성한다.

PR 템플릿 양식에 맞춰서 작성한 모습 (다른 커밋으로 작성한거라 위 커밋 예시와 관련 이슈가 다름)

 

4. 팀원(Reviewers)들이 PR을 리뷰하고 피드백한다. 필요 시 추가 커밋을 통해 PR을 업데이트한다.

 

5. 리뷰가 완료되고 승인되면 Merge Pull Request 버튼을 눌러 PR을 병합한다.

- PR 내용에 Closes #이슈번호 키워드가 포함되어 있어 병합 시 해당 이슈가 자동으로 닫힌다.

리뷰와 승인을 받고 병합한다.
PR 내의 Closes #1 키워드로 인해 이슈가 자동으로 닫힌다.
프로젝트 탭에서도 확인할 수 있다.

 

6. 병합이 완료된 후 Delete branch 버튼을 누르면 원격 저장소에서 해당 브랜치가 삭제된다. 로컬 저장소에서도 직접 해당 브랜치를 삭제한 뒤, 새로운 브랜치를 만들어 작업하도록 한다.