포스트

[GitHub 100일 챌린지] Day 56 - Pull Request 개념과 구조

[GitHub 100일 챌린지] Day 56 - Pull Request 개념과 구조

100일 챌린지 Day 56 - Pull Request는 코드 변경을 제안하고 리뷰받는 GitHub의 핵심 기능입니다.

배울 내용

  1. Pull Request의 정의와 목적
  2. PR의 구조와 구성 요소
  3. 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 라이센스를 따릅니다.