Pull Request & 코드 리뷰
PR이 무엇이고 왜 쓰는지, 그리고 올라온 PR을 GitHub에서 실제로 리뷰하는 방법까지 한 페이지에 모았습니다.
Pull Request란?
새로운 팀에 합류했다고 생각해 봅시다. 이미 방대한 코드가 쌓여 있는 프로젝트에 내 코드를 처음 얹으려니 겁이 나죠. "이거 버그 없을까?" 매번 바쁜 선배를 붙잡고 검사받을 수도 없는 노릇입니다. 이럴 때 쓰는 기능이 **Pull Request(PR)**입니다.
PR이란, 내가 작업한 내용을 다른 사람에게 검토받고 머지해 달라고 요청하는 GitHub 기능입니다. 특정 시간을 맞추지 않아도 되고, 서로 의견을 자유롭게 주고받을 수 있어서 코드 품질이 자연스럽게 올라갑니다.
혼자 할 때도 쓰는 이유
개인 프로젝트라도 PR은 쓸모가 있습니다. PR 하나하나가 기능 단위의 기록이 되기 때문에, 굳이 문서를 따로 안 써도 "이 커밋 묶음이 왜 필요했는지"가 자동으로 남습니다. 또 PR 없이 바로 머지하면 실수했을 때 되돌리기 어렵지만, PR로 쌓아두면 remote에 기록이 남아 쉽게 복구할 수 있습니다.
팀 프로젝트에서는 더 중요해진다
팀에서는 PR을 통해 서로의 코드를 읽으며 지식이 공유되고, 작성자의 의도가 투명하게 드러납니다. "왜 이렇게 짰지?"를 미래의 나 자신도 PR을 보면 기억해낼 수 있죠.
실제 작업 순서
앞으로 모든 작업은 이 순서를 따르게 됩니다.
git pull → 브랜치 생성(git checkout -b) → 커밋(git add & git commit) → git push → PR 생성PR의 3가지 상태
| 상태 | 의미 |
|---|---|
| Open | 아직 검토 중이거나 추가 작업이 필요한 상태. 커밋을 더 얹거나 토론할 수 있습니다. |
| Merged | 기본 브랜치로 병합 완료된 상태. Merge 버튼을 누르면 여기로 바뀌고, 이후엔 추가 커밋을 얹을 수 없습니다. |
| Closed | 거부됐거나 더 이상 필요 없어진 상태. 브랜치가 남아 있다면 다시 Open으로 되돌릴 수 있습니다. |
참고로 Merged도 결국 "닫힌" PR이기 때문에, GitHub의 Closed 탭에서는 Merged와 Closed가 함께 보입니다.
GitHub로 코드 리뷰하기
동료가 PR을 올리고 리뷰를 요청했다고 가정해봅시다. PR 페이지의 Files changed 탭에 들어가면 변경된 코드가 보입니다. 빨간 줄은 삭제된 코드, 초록 줄은 추가된 코드입니다.
라인별 리뷰
라인 번호 오른쪽에 마우스를 올리면 + 버튼이 뜨고, 여기서 코멘트를 남길 수 있습니다. 단순 코멘트뿐 아니라 suggested change 기능으로 직접 수정안을 제안할 수도 있습니다. suggestion 블록 안에 원하는 코드를 적으면, 작성자가 버튼 한 번으로 그 제안을 그대로 반영할 수 있습니다.
멀티라인 리뷰
라인 번호 좌측을 클릭하고 Shift를 누른 채 다른 라인을 클릭하면 여러 줄을 노란색으로 선택할 수 있습니다. 이 상태로 코멘트를 남기면 여러 줄에 걸친 리뷰가 됩니다. 참고로 코멘트에 #을 입력하면 다른 PR을 검색해서 연결할 수 있습니다.
Viewed 체크로 리뷰 진행 상황 관리하기
파일이 수십 개씩 바뀌는 PR은 뭘 봤는지 헷갈리기 쉽습니다. 파일 옆의 Viewed 체크박스를 누르면 해당 파일이 접히고, 이후 새 커밋에서 그 파일이 안 바뀌었다면 계속 접힌 채로 남아있습니다. 리뷰 진행률이 우측 하단 파란 바로 표시됩니다.
커밋 단위로 리뷰하기
PR을 논리 단위로 잘게 커밋해서 올렸다면, 커밋별 보기 기능으로 하나씩 순서대로 확인하는 것도 좋은 방법입니다. Shift로 범위를 선택하면 연속된 여러 커밋을 한 번에 볼 수도 있습니다.
리뷰 제출하기: Comment / Approve / Request changes
| 옵션 | 용도 |
|---|---|
| Comment | 의견이나 질문만 남기고 싶을 때 (승인/반려 의사 없음) |
| Approve | 코드에 문제없다는 승인. Branch protection에서 필수로 지정했다면 이게 있어야 머지 가능 |
| Request changes | 수정이 필요할 때. 이게 걸려 있으면 작성자가 새 커밋으로 반영할 때까지 머지가 막힘 |
정리
| 개념 | 한 줄 요약 |
|---|---|
| Pull Request | 내 작업을 검토받고 머지해 달라고 요청하는 GitHub 기능 |
| PR 상태 (Open/Merged/Closed) | 검토 중 / 병합 완료 / 반려·종료 |
| 코드 리뷰 | 라인/멀티라인 코멘트, Viewed 체크, Comment/Approve/Request changes로 진행 |
출처: Codyssey-B1/B2-2
