Pull Request 규칙
Pull Request를 관리하는 규칙들을 정리하고 있어요.
Pull Request는 코드 리뷰와 협업의 핵심이므로, 체계적으로 작성하고 관리해야 해요.
PR 제목
PR 제목은 다음과 같은 형식으로 작성해요.
plaintext
[브랜치명]
PR 제목을 작성할 때는 다음 규칙을 꼭 지켜야 해요.
- 한국어, 영어 모두 사용 가능해요.
- 연결된 이슈 번호를 꼭 포함해야 해요.
- 50자 이내로 간결하게 작성해요.
- 마침표는 사용하지 마세요.
PR 본문
PR 본문에는 다음 내용이 포함되어야 해요.
필수 항목
- 변경 사항: 무엇을 변경했는지 명확하게 설명해요.
- 작업 내용: 어떻게 구현했는지 설명해요.
- 테스트 방법: 리뷰어가 어떻게 테스트할 수 있는지 설명해요.
선택 항목
- 스크린샷/영상: UI 변경이 있다면 Before/After를 첨부해요.
- 성능 변화: 성능 개선 작업이라면 측정 결과를 첨부해요.
- Breaking Changes: 하위 호환성이 깨지는 변경이 있다면 명시해요.
- 참고 사항: 리뷰어가 알아야 할 추가 정보를 작성해요.
좋은 예시
PR 작성의 좋은 예시는 다음과 같아요.
markdown
제목: [Feature] 웹뷰 브릿지 카메라 API 구현 (#123)## 변경 내용`CameraBridge` 클래스를 생성하여 웹뷰와 네이티브 간 통신을 처리했습니다.`postMessage` 방식으로 웹뷰에서 카메라 요청을 받고, 결과를 콜백으로 전달했습니다.## 관련 이슈Resolve #23## 스크린샷[Before](이미지)## 체크리스트[ ] 코드가 프로젝트의 코딩 스타일을 따릅니다[ ] 자체 코드 리뷰를 완료했습니다[ ] 문서를 업데이트했습니다 (필요한 경우)[ ] Breaking Changes가 없습니다## 기타사항(이미지)
나쁜 예시
PR 작성의 나쁜 예시는 다음과 같아요.
markdown
제목: 기능 추가 → 타입 미표기, 이슈번호 누락, 너무 모호함제목: [Feature] 카메라 기능을 추가했습니다. (#123) → 마침표 사용, 과거형제목: [Feature] 웹뷰 브릿지 카메라 API를 구현하고 네이티브 통신도 추가하고... (#123) → 너무 김본문:카메라 기능 추가했어요 → 내용이 너무 부실함, 테스트 방법 누락
리뷰 요청
PR을 생성할 때는 리뷰어를 지정해야 해요.
- 최소 1명 이상의 리뷰어를 지정해요.
- 해당 도메인의 전문가나 코드 오너를 포함해요.
- 리뷰가 완료되기 전까지는 머지하지 마세요.
PR 크기
PR은 가능한 한 작게 유지해야 해요.
- 하나의 PR은 하나의 이슈만 해결해야 해요.
- 변경된 파일이 10개 이상이라면 PR을 분리할 수 있는지 검토해주세요.
- 리뷰어가 30분 이내에 리뷰할 수 있는 크기가 적당해요.
Draft PR
작업이 완료되지 않았지만 피드백이 필요하다면 Draft PR을 사용해요.
- PR 생성시에
Create draft pull request버튼을 눌러 GitHub의 Draft PR 기능을 사용하세요. - 어떤 부분에 대해 피드백이 필요한지 본문에 명시해야해요.
- 작업이 완료되면 Draft 상태를 해제하고 리뷰를 요청해야해요.
머지 방식
프로젝트마다 선호하는 머지 방식이 다를 수 있어요.
| 방식 | 설명 | 사용 시기 |
|---|---|---|
| Squash Merge | 모든 커밋을 하나로 합쳐서 머지해요 | 커밋 히스토리를 깔끔하게 유지하고 싶을 때 |
| Merge Commit | 머지 커밋을 생성하여 모든 커밋을 보존해요 | 커밋 히스토리를 모두 보존하고 싶을 때 |
| Rebase Merge | 커밋들을 base 브랜치 위에 재배치하여 머지해요 | 선형적인 히스토리를 유지하고 싶을 때 |
각 프로젝트에 적합한 방식을 사용하는게 좋아요.
충돌 해결
PR에서 충돌이 발생했다면 다음과 같이 처리해요.
- 로컬에서 최신 base 브랜치를 pull 받아요.
- 작업 브랜치에 merge 또는 rebase 해요.
- 충돌을 해결하고 테스트해요.
- 변경사항을 push 해요.
금지사항
의미없는 제목은 금지됩니다. ex) Feature 작업, Bug 수정
본문 없이 제목만 작성하는것도 금지됩니다.
테스트하지 않은 코드를 PR하는것도 금지됩니다.
리뷰어의 피드백 없이 강제로 머지하는것도 금지됩니다.