GitHub

GitHub 협업 가이드 - Pull Request

sangwonYoon 2023. 6. 2. 01:29

Pull Request

pull request는 다른 브랜치로 merge하기 전 팀원들에게 코드 리뷰를 요청하는 단계이다.

다른 팀원이 작업한 내용을 파악할 수 있도록 전체적인 내용(Overview), 변경된 부분(Change Log), 리뷰어가 참고해야할 사항(To Reviewer), 관련된 이슈(Issue Tag)를 기록한다.

reviewer(코드 리뷰를 할 팀원들), assignee(본인)를 반드시 지정하고, 작업의 label도 부착한다. 

 

이제 PR Template을 작성한 뒤, 새로운 브랜치를 생성해 작업을 진행한 뒤 PR을 진행해보자.

 

PR Template

먼저 PR Template을 작성해보자.

PR template은 issue template과 다르게 GitHub UI에서 추가할 수 없고, 직접 .github 경로에 PULL_REQUEST_TEMPLATE.md 파일을 추가해야 한다.

위와 같은 양식으로 작성한다.
작성한 템플릿을 원격 저장소로 push한다.

 

Issue 생성

그 다음으로 진행할 작업을 issue로 등록한다.

기존에 생성해 두었던 issue template을 활용하여 손쉽게 issue를 작성할 수 있다.

 

브랜치 생성

이제 issue를 처리할 feature 브랜치를 생성하고 작업을 진행한다.

브랜치의 이름은 어떤 이슈를 작업중인 브랜치인지 확인할 수 있도록 네이밍한다.
작업 내용을 원격 저장소에 push한다.

 

Pull Request

작업이 완료되고, merge를 하기 위해 pull request를 보낸다.

여기서, 2번 issue에 closed 키워드를 적게 되면 해당 PR이 close될 때, 2번 issue도 같이 close된다.

 

코드 리뷰는 Files Changed 탭을 클릭해 진행할 수 있다.

 

코드 좌측의 + 버튼을 눌러 코드에 comment를 남길 수 있다.

comment를 남길 때 Add single comment 버튼과 Start a review 버튼을 사용할 수 있다.

Add single comment 버튼은 comment를 개별적으로 남기며, 남기는 즉시 팀원이 확인할 수 있다. 

 

다른 방법으로는 Start a review 버튼을 눌러 리뷰를 시작한 뒤, comment를 여러개 작성하고 우측 상단의 Finish your review에서 리뷰를 끝낼 수 있다.

 

리뷰를 제출할 때 Comment, Approve, Request changes 3가지 선택지가 존재한다.

Comment는 해당 PR을 승인하거나, 거부하는 의사를 밝히지 않고 단순히 피드백을 남길 때 선택한다.

Approve는 해당 PR을 승인할 때 선택한다.

Request changes는 해당 PR을 merge하기 전, 해결해야 하는 문제가 있는 경우 선택한다.

 

PR이 Approve된 경우, 코드를 대상 브랜치로 merge할 수 있다. 이 때 merge를 하는 방식이 3가지 존재한다.

Create a merge commit은 합쳐지는 브랜치(여기서는 feat-2/mult_func)의 커밋 로그에 merge 커밋을 추가로 남겨 대상 브랜치로 merge한다.

Squash and merge는 합쳐지는 브랜치의 커밋 로그들을 하나로 합치면서 대상 브랜치로 merge한다.

Rebase and merge는 합쳐지는 브랜치를 rebase하여 merge 커밋을 남기지 않고, 기존 커밋 로그를 유지한 상태에서 대상 브랜치로 merge한다.

 

merge를 진행하면, 해당 PR이 close되는 동시에 2번 issue도 같이 close되는 것을 확인할 수 있다.