GitHub Pull Request(PR) 입문 — 코드 리뷰 받는 법, 처음부터 따라하기

Git으로 브랜치를 만들고 코드를 push하는 건 해봤는데 "PR을 만들어주세요"라는 말에 멈춘 적 있나요? PR은 어렵지 않아요. "내가 작업한 걸 합쳐도 될까요?" 하고 요청하는 것뿐입니다.
이 글에서 PR 만드는 법부터 코드 리뷰, Merge까지 처음부터 따라해볼게요.
이 글은 이런 분을 위해 쓴 거예요
1) Git 브랜치가 뭔지는 알고 git add/commit/push를 해본 적 있는 분
2) PR(Pull Request)이라는 걸 처음 만들어보려는 분
3) 팀 프로젝트나 오픈소스에 기여하기 전에 PR 흐름을 미리 익히고 싶은 분
Git 브랜치가 아직 어렵다면 Git 브랜치 전략을 먼저 읽어보세요.
Git 브랜치 전략, 혼자 개발해도 이건 알아야 합니다
Git으로 혼자 개발할 때 main 브랜치에 바로 커밋하시나요? 그래도 돌아가긴 하는데 코드가 꼬이거나 "아까 그 버전으로 돌아가고 싶다"는 순간이 오면 후회하게 됩니다.브랜치를 쓰면 이런 문제
ldsjoy.tistory.com
목차
✳️ PR이 뭔데?
PR은 Pull Request의 줄임말이에요. 한 마디로 "내가 작업한 걸 합쳐도 될까요?" 하고 요청하는 거예요.
좀 더 구체적으로 설명하면 아래와 같습니다:
main브랜치에서 새 브랜치를 만들어서 작업해요- 작업이 끝나면 GitHub에 push해요
- "이 변경사항을
main브랜치에 합쳐주세요"라고 요청(Request)을 보내요 - 팀원이 코드를 확인하고(리뷰) 괜찮으면 합쳐요(Merge)
이게 PR의 전체 흐름이에요. 생각보다 간단하죠?
이름이 Pull Request인 이유는? 내가 작업한 브랜치의 변경사항을 메인 브랜치로 "당겨와(Pull) 달라"고 요청(Request)하는 거라서 그래요.
✳️ 왜 PR을 쓸까?
"그냥 main 브랜치에 바로 push하면 안 되나?" 싶을 수 있어요. 물론 혼자 작업하면 그렇게 해도 되긴 하는데 PR을 쓰면 이런 점이 좋아요.
📌 팀으로 일할 때
- 다른 사람이 내 코드를 확인해줘요 (코드 리뷰). 실수를 미리 잡을 수 있어요.
- "누가, 왜, 뭘 바꿨는지"가 PR 단위로 깔끔하게 기록돼요.
- main 브랜치에 검증되지 않은 코드가 들어가는 걸 막을 수 있어요.
📌 혼자 할 때도 유용해요
- 변경 이력이 PR 단위로 정리돼서 나중에 찾기 쉬워요.
- "이 기능 언제 추가했더라?" → 해당 PR만 보면 돼요.
- 실수로 main에 직접 push하는 걸 방지할 수 있어요.
- 포트폴리오에서 "나 이런 작업 했어요"를 PR 링크로 보여줄 수 있어요.
✳️ PR 만드는 법 — 실전 흐름
실제로 PR을 만들어볼게요. 터미널과 GitHub 웹사이트를 번갈아 쓰게 돼요.
📌 Step 1: 새 브랜치 만들고 이동
# main 브랜치에서 시작
git checkout main
# 최신 상태로 업데이트
git pull origin main
# 새 브랜치 만들고 이동
git checkout -b feature/add-login-page
브랜치 이름은 작업 내용을 알 수 있게 지어요. feature/기능명, fix/버그명, docs/문서명 같은 형태가 일반적이에요.
📌 Step 2: 작업하고 커밋
# 파일 수정 후 스테이징
git add login.html login.css
# 커밋 메시지 작성
git commit -m "feat: 로그인 페이지 HTML/CSS 추가"
커밋은 여러 번 해도 돼요. 작업 단위로 나눠서 커밋하면 나중에 리뷰하기도 편하고 문제가 생겼을 때 되돌리기도 쉬워요.
📌 Step 3: GitHub에 push
git push origin feature/add-login-page
처음 push하면 GitHub에 해당 브랜치가 생겨요.
📌 Step 4: GitHub에서 PR 생성
push하고 나서 GitHub 저장소 페이지에 가면 상단에 노란색 배너가 떠요.

"Compare & pull request" 버튼을 클릭하면 PR 생성 화면이 나와요.

여기서 채워야 할 것:
- base 브랜치: 합칠 대상 (보통
dev 또는 main) - compare 브랜치: 내가 작업한 브랜치 (
feature/add-login-page) - 제목: 이 PR이 뭘 하는지 한 줄로
- 설명: 변경 내용, 이유, 확인할 점 등
다 작성했으면 "Create pull request" 버튼을 누르면 돼요.

✳️ 좋은 PR 작성법
PR은 그냥 만들면 끝이 아니에요. 리뷰하는 사람이 쉽게 이해할 수 있도록 잘 작성하는 게 중요해요.
📌 제목은 간결하게
❌ 로그인 관련 작업
❌ 수정함
✅ feat: 로그인 페이지 UI 구현
✅ fix: 로그인 시 비밀번호 검증 오류 수정
접두어를 붙이면 어떤 종류의 변경인지 한눈에 보여요:
feat:— 새 기능fix:— 버그 수정docs:— 문서 수정refactor:— 코드 리팩토링style:— 코드 스타일 변경 (동작 변경 없음)
📌 설명은 "왜"를 중심으로
## 변경 사항
- 로그인 페이지 HTML/CSS 추가
- 이메일/비밀번호 입력 폼 구현
- 반응형 레이아웃 적용
## 이유
- 회원가입 기능에 앞서 로그인 UI가 먼저 필요함
## 확인 방법
- login.html을 브라우저로 열면 로그인 폼이 보임
- 모바일 크기로 줄여도 레이아웃이 깨지지 않음
리뷰하는 사람 입장에서는 "뭘 바꿨는지"보다 "왜 바꿨는지"가 더 중요해요. 코드를 보면 뭘 바꿨는지는 알 수 있지만 왜 바꿨는지는 설명이 없으면 모르거든요.
📌 변경 범위는 작게
한 PR에 너무 많은 변경을 넣으면 리뷰하기 어려워요. "로그인 페이지 UI + 회원가입 API + 데이터베이스 설계"를 하나의 PR에 넣는 것보다 각각 따로 PR을 만드는 게 좋아요.
✳️ 코드 리뷰 받고 수정하기
PR을 만들면 팀원이 코드를 확인하고 코멘트를 남겨요. 이게 코드 리뷰예요.

📌 리뷰 코멘트 확인하기
PR 페이지에서 "Files changed" 탭을 보면 변경된 코드와 함께 리뷰어가 남긴 코멘트를 볼 수 있어요.
코멘트는 보통 이런 종류가 있어요:
- 질문: "이 부분은 왜 이렇게 했나요?"
- 제안: "이렇게 바꾸면 더 좋을 것 같아요"
- 승인: "좋아요! 문제없습니다" (Approve)
- 변경 요청: "이 부분은 수정이 필요해요" (Request changes)
📌 수정하고 다시 push하기
리뷰에서 수정 요청이 오면 같은 브랜치에서 코드를 수정하고 다시 push하면 돼요.
# 리뷰 반영해서 코드 수정
# ... 파일 수정 ...
# 스테이징 + 커밋
git add login.css
git commit -m "fix: 리뷰 반영 — 모바일 패딩 값 수정"
# 같은 브랜치에 push
git push origin feature/add-login-page
새로 push하면 PR에 자동으로 반영돼요. 새 PR을 만들 필요 없어요. 리뷰어가 다시 확인하고 괜찮으면 승인(Approve)해줘요.
✳️ Merge하고 브랜치 삭제
리뷰어가 승인하면 드디어 Merge할 수 있어요.

📌 Merge 방법
PR 페이지 하단에 초록색 "Merge pull request" 버튼이 있어요. 클릭하면 내 작업이 main 브랜치에 합쳐져요.
Merge 방식은 3가지가 있는데 처음에는 기본값(Create a merge commit)을 쓰면 돼요:
| 방식 | 설명 |
|---|---|
| Create a merge commit | 병합 커밋을 하나 만들어요 (기본값, 처음엔 이걸로) |
| Squash and merge | 여러 커밋을 하나로 합쳐서 병합해요 |
| Rebase and merge | 커밋을 그대로 유지하면서 병합해요 |
📌 브랜치 삭제
Merge가 끝나면 작업 브랜치는 더 이상 필요 없어요. GitHub에서 "Delete branch" 버튼을 눌러 삭제하고 로컬에서도 정리해요.
# main으로 돌아가기
git checkout main
# 최신 상태 반영
git pull origin main
# 로컬 브랜치 삭제
git branch -d feature/add-login-page
이제 한 사이클이 끝났어요. 다음 작업할 때는 다시 Step 1부터 새 브랜치를 만들면 돼요.
✳️ PR 관련 용어 정리
| 용어 | 의미 |
|---|---|
| Pull Request (PR) | 내 브랜치의 변경사항을 합쳐달라고 요청하는 것 |
| Reviewer | PR을 확인하고 리뷰해주는 사람 |
| Approve | 리뷰어가 "괜찮습니다, 합쳐도 돼요"라고 승인하는 것 |
| Request Changes | 리뷰어가 "수정이 필요해요"라고 변경을 요청하는 것 |
| Merge | PR의 변경사항을 대상 브랜치에 합치는 것 |
| Conflict | 같은 파일의 같은 부분을 여러 사람이 수정해서 충돌이 난 상태 |
| Draft PR | 아직 작업 중인 PR. 리뷰 요청 전에 먼저 올려두고 싶을 때 사용 |
| Base branch | PR이 합쳐질 대상 브랜치 (보통 main) |
| Compare branch | 내가 작업한 브랜치 |
| Assignee | 이 PR의 담당자 |
| Label | PR에 붙이는 태그 (bug, enhancement, documentation 등) |
이전 글: [개발/개발환경] - GitHub 처음 쓰는 사람을 위한 가이드 - push, pull, clone
수정해야 하는 부분이 있거나 궁금한 점 있으면 댓글 남겨주시고 도움이 되셨다면 공감 부탁드려요!
'개발 > 개발환경' 카테고리의 다른 글
| Docker 실전 — Dockerfile 작성부터 docker compose까지 (0) | 2026.06.04 |
|---|---|
| .gitignore 제대로 쓰는 법 — 이걸 안 하면 API 키가 유출됩니다 (0) | 2026.06.03 |
| 개발자가 알아야 할 HTTP 기초 - GET, POST, 상태 코드 한번에 정리 (0) | 2026.06.01 |
| JSON이 뭔지 5분 만에 이해하기 - 개발에서 매일 만나는 데이터 형식 (0) | 2026.06.01 |
| API가 뭔지 5분 만에 이해하기 — 개발에서 매일 듣는 그 단어 (0) | 2026.06.01 |