Pull Request란?
브랜치에서 작업을 마쳤습니다. 이제 main에 합치고 싶습니다. 그냥 합쳐도 될까요?
팀 환경에서는 먼저 **검토(review)**를 받습니다. Pull Request(PR)는 "내 변경사항을 확인하고 합쳐달라"는 요청입니다.
PR을 통해:
- 팀원이 코드를 검토하고 피드백을 줄 수 있습니다
- 자동 테스트가 실행됩니다
- 변경 이력이 명확하게 남습니다
PR 만들기
이전 레슨에서 만든 add-profile 브랜치로 PR을 만들어봅니다.
- 저장소에서 Pull requests 탭 클릭
- New pull request 클릭
- base:
main, compare:add-profile선택 - 아래로 스크롤하면 변경 사항(diff)이 보입니다
- Create pull request 클릭
PR 제목과 설명 작성:
제목: docs: 프로필 정보 추가
설명:
## 변경 사항
- README에 개인 프로필 섹션 추가
- 이름, 관심사, 목표 정보 포함
## 확인 방법
README.md 파일에서 "나에 대해" 섹션 확인
- Create pull request 클릭
PR 화면 살펴보기
PR 페이지의 주요 탭입니다.
| 탭 | 내용 | | ----------------- | ------------------------ | | Conversation | 댓글, 리뷰, 토론 | | Commits | 이 PR에 포함된 커밋 목록 | | Files changed | 변경된 파일과 diff |
Files changed 탭에서 줄 번호 왼쪽 + 버튼을 클릭하면 특정 줄에 댓글을 달 수 있습니다.
리뷰 달기
팀원이 PR을 검토하는 방법입니다. 혼자 연습할 때는 자신의 PR에 직접 달아봅니다.
- Files changed 탭 클릭
- 변경된 줄 위에 마우스를 올리면 + 버튼이 나타납니다
- 클릭 후 댓글 입력:
이름 필드 추가가 좋네요! 관심사도 더 추가하면 어떨까요?
- Add single comment 또는 Start a review 클릭
리뷰 상태:
- Comment: 일반 의견 (병합 차단 없음)
- Approve: 승인 — 병합 가능
- Request changes: 수정 요청 — 수정 전 병합 불가
PR 병합하기
리뷰가 완료되면 병합합니다.
- Conversation 탭으로 돌아오기
- 초록색 Merge pull request 버튼 클릭
- Confirm merge 클릭
- Delete branch 클릭 (병합된 브랜치 정리)
이제 main 브랜치에 변경사항이 반영됩니다.
"왜?" — PR이 팀의 품질을 높이는 이유
PR은 단순한 병합 요청이 아닙니다. 팀의 지식 공유 채널입니다.
- 리뷰어가 버그를 미리 발견합니다
- 코드 스타일과 설계 방향을 통일합니다
- 새 팀원이 코드베이스를 파악하는 학습 기회가 됩니다
- "왜 이렇게 짰지?"라는 질문의 답이 PR 설명에 남습니다
많은 팀이 "main에 직접 커밋 금지" 정책을 사용합니다. 모든 변경은 PR을 거쳐야 합니다.
심화 학습
Draft PR — 아직 리뷰 준비가 안 됐을 때
작업 중인 PR을 공유하고 싶지만, 아직 리뷰 받을 준비가 안 됐을 때 Draft PR을 사용합니다.
New pull request 에서 Create draft pull request 선택.
Draft 상태에서는:
- 코드를 보고 의견을 나눌 수 있지만, 병합 버튼이 비활성화됩니다
- 준비되면 Ready for review 버튼으로 전환
"작업 중" 상태를 팀원에게 알리는 좋은 방법입니다.
PR 템플릿 설정하기
저장소에 PR 템플릿을 추가하면, PR을 만들 때 설명 형식이 자동으로 채워집니다.
저장소 루트에 .github/pull_request_template.md 파일을 만들고:
## 변경 사항
<!-- 무엇을 바꿨나요? -->
## 테스트 방법
<!-- 어떻게 확인했나요? -->
## 관련 이슈
<!-- Closes #이슈번호 -->
팀원 모두가 일관된 PR 설명을 작성하게 됩니다.
add-profile브랜치(또는 새 브랜치)에서README.md를 수정하세요.- Pull Request를 만들고 제목과 설명을 작성하세요.
- Files changed 탭에서 변경 사항을 확인하고, 댓글을 달아보세요.
- PR을 병합하고 브랜치를 삭제하세요.
Q1. Pull Request(PR)의 주된 목적은?
- A) 저장소를 복사해서 가져오는 것
- B) 브랜치의 변경 사항을 팀원이 검토한 뒤 병합하도록 요청하는 것
- C) 파일을 원격 서버에 업로드하는 것
- D) 저장소를 공개로 전환하는 것