[GitHub 100일 챌린지] Day 56 - Pull Request 개념과 구조
[GitHub 100일 챌린지] Day 56 - Pull Request 개념과 구조
100일 챌린지 Day 56 - Pull Request는 코드 변경을 제안하고 리뷰받는 GitHub의 핵심 기능입니다.
배울 내용
- Pull Request의 정의와 목적
- PR의 구조와 구성 요소
- PR 생명주기와 상태
1. Pull Request란?
정의: “내 변경사항을 프로젝트에 반영해주세요”라는 요청
graph LR
A[내 Fork] -->|Pull Request| B[원본 저장소]
B -->|코드 리뷰| C[검토]
C -->|승인| D[Merge]
2. PR이 필요한 이유
코드 품질:
- 여러 사람의 검토
- 버그 사전 발견
- 표준 준수 확인
협업:
- 변경사항 공유
- 토론과 피드백
- 지식 공유
PR은 단순한 merge 버튼이 아닙니다. 변경 의도를 설명하고, 리뷰어와 합의하고, 프로젝트 기록을 남기는 협업 문서입니다.
3. PR의 구성 요소
제목
1
2
3
feat: Add dark mode toggle button
fix: Resolve memory leak in UserList
docs: Update installation guide
설명 (Description)
- 변경 이유
- 변경 내용
- 테스트 방법
- 스크린샷 (UI)
좋은 PR 설명 예:
1
2
3
4
5
6
7
8
9
10
11
12
13
## 변경 이유
로그인 실패 시 사용자에게 아무 안내가 없어 원인을 알기 어려웠습니다.
## 변경 내용
- 로그인 실패 메시지 표시
- 실패 상태 스타일 추가
- 실패 케이스 테스트 추가
## 테스트
- [ ] 잘못된 비밀번호 입력 시 오류 메시지 표시
- [ ] 올바른 비밀번호 입력 시 대시보드 이동
Closes #123
코드 변경 (Files changed)
- Diff 뷰
- 라인별 비교
- 추가/삭제 통계
리뷰 (Review)
- Approve
- Request changes
- Comment
4. PR 생명주기
1
2
3
4
5
6
7
8
9
1. Open (생성)
↓
2. Review (검토)
↓
3. Changes requested (수정 요청)
↓
4. Approved (승인)
↓
5. Merged (병합) / Closed (종료)
Draft PR은 아직 리뷰 준비가 되지 않았지만 진행 상황을 공유하고 싶을 때 사용합니다. 큰 작업은 Draft PR로 먼저 열어두면 방향이 틀어졌을 때 빨리 피드백을 받을 수 있습니다.
5. PR 종류
일반 PR:
1
2
myname/react:feature-hooks
→ facebook/react:main
Cross-branch PR (같은 저장소):
1
2
mycompany/project:feature
→ mycompany/project:develop
6. PR 상태 표시
- 🟢 Open: 리뷰 대기
- 🟣 Draft: 작업 중
- 🟢 Approved: 승인됨
- 🔴 Changes requested: 수정 필요
- 🟣 Merged: 병합 완료
- ⚫ Closed: 종료
7. 좋은 PR의 크기
좋은 PR은 리뷰어가 한 번에 이해할 수 있는 크기입니다.
| 좋은 PR | 어려운 PR |
|---|---|
| 하나의 목적 | 여러 기능이 섞임 |
| 테스트 방법 명확 | “확인 부탁드립니다”만 있음 |
| 변경 파일이 적절함 | 포맷팅/기능/리팩토링이 뒤섞임 |
| 관련 Issue 연결 | 왜 바꿨는지 알 수 없음 |
가능하다면 PR은 아래처럼 나눕니다.
1
2
3
4
PR 1: 데이터 구조 추가
PR 2: UI 컴포넌트 추가
PR 3: API 연결
PR 4: 테스트와 문서 보강
작은 PR은 빠르게 리뷰되고, 문제가 생겨도 되돌리기 쉽습니다.
8. PR 생성 전 셀프 체크
PR을 만들기 전에 로컬에서 확인합니다.
1
2
3
git status
git diff main...HEAD
npm test
그리고 PR 본문에 아래를 남깁니다.
- 무엇을 바꿨는가?
- 왜 바꿨는가?
- 어떻게 테스트했는가?
- 리뷰어가 특히 봐야 할 부분은 어디인가?
정리
완료 체크:
- Pull Request의 목적을 설명할 수 있다
- PR의 구성 요소를 나열할 수 있다
- PR 생명주기를 이해했다
- 좋은 PR 설명과 나쁜 PR 설명을 구분할 수 있다
- PR 생성 전 셀프 체크를 할 수 있다
핵심 요약:
- PR = 코드 변경 제안 + 리뷰 요청
- 제목, 설명, 코드 변경, 리뷰로 구성
- Open → Review → Approve → Merge
- 작은 PR일수록 리뷰와 병합이 쉬워진다
다음: Day 57 - PR 생성하기 →
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
