Skip to content

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