최근 기존 프로젝트를 리팩토링하면서 느낀 점이 있었다.

지금은 혼자하기 때문에 PR 단위를 크게 인식하지 않았는데 나중을 대비하여 미리 습관을 들여놓으면 좋을 것 같다는 생각을 했다.

왜냐하면 지금 올리는 PR이 최근에는 file change가 40개가 넘어가는 그런 것도 있었기에 .. (머쓱)

 

그렇다면 좋은 PR이란 무엇일까?


좋은 PR이란? 

 

 

    1. 작고 명확한 목적을 가진다

        하나의 PR은 하나의 목적(기능 추가, 버그 수정, 리팩터링 등)을 가져야 한다.

        변경 범위가 넓으면 리뷰하기 어렵고, 롤백도 힘들어지기 때문!

    2. 의미 있는 커밋 메시지

         커밋 메시지는 무엇을 왜 바꿨는지를 간단히 설명해야 한다. (예: feat: 로그인 실패 시 에러 메시지 추가)

 

    3. 충분한 설명

         PR 설명란에는 변경 이유, 구현 방식, 참고 이슈 등을 적는다.

         복잡한 경우 스크린샷이나 GIF 첨부하는 것도 좋다.

   

    4. 자동화 통과 확인

         GitHub Actions나 CI에서 lint, test 등이 통과된 PR이 바람직하다.

 

    5. 리뷰어 입장을 고려

         리뷰어가 빠르게 이해할 수 있도록 변수명, 함수명, 구조 등을 신경써야한다.


PR의 단위

 

    1. 단일 책임 원칙

         하나의 PR하나의 "일"만 하도록 구성한다. (예: 로그인 기능을 추가하는 PR은 UI 리팩터링과는 분리해야 함.)

 

    2. 리뷰 가능한 크기

         너무 많은 파일/라인을 바꾸지 말 것, 일반적으로 300줄 이하의 변경이 가장 이상적이라고 한다. (물론 프로젝트에 따라 다름)

 

    3. 점진적인 변경

         큰 기능은 작은 PR로 나눠서 순차적으로 머지하는 것이 좋다.

 

    4. 기능별 혹은 작업 단위별 브랜치 관리

         예: feature/login, fix/signup-bug, refactor/header-ui

 

내가 PR 템플릿을 적용하게 된 이유

 

프로젝트를 처음 진행했을 때부터 코드 리뷰어들을 위해 항상 템플릿에 맞춰 PR을 작성하고는 했다.

왜냐하면 초반에는 커밋의 단위 / PR 단위에 대한 개념이 없었기 때문에 파일 변경 수가 10개가 넘어가는 일이 다반사였고,

내 자신이 봐도 이런 PR을 보고 리뷰하기가 쉽지 않을 거라는 생각이 들었기 때문이다.

 

처음 프로젝트에서는 나혼자 나만의 PR 템플릿을 적용시켰고,
두 번째 프로젝트에서는 미리 팀원들끼리 합의하여 템플릿을 정한 뒤 PR을 올릴 때마다 템플릿을 복사하여 사용했다.

세 번째 프로젝트에서도 똑같이 사전에 PR 템플릿을 정했지만, 문득 계속 복사해서 PR 템플릿을 작성하는 것이 번거롭다고 느꼈다.


그래서 찾아본 결과 GitHub에서 PR 템플릿을 설정하면, 그 후 PR을 올릴 때 자동으로 템플릿이 적용된다는 것이었다.

 

그렇다면 PR 템플릿에는 어떤 내용이 들어가면 좋을까?


나의 PR 템플릿

 

아무래도 PR은 코드 리뷰가 주요 목적인 것 같아서  내가 리뷰어일 때 어떤 내용이 있어야 파악하기 쉬울지 생각하며 구성해 보았다.

먼저 나는 모든 프로젝트에서 기본적으로 수정한 파일, 작업 내역, 참고 사항을 작성하도록 템플릿을 설정했다.

필요에 의해서 유동적으로 스크린샷이라던지 컴포넌트 사용방법 등을 추가하기도 했다.

 

이렇게 선정한 이유는 아래와 같다.

수정한 파일

수정한 파일 목록을 작성한 건 충돌 방지를 위해서가 컸다.
원래 변경된 파일들을 확인할 수 있지만, 먼저 수정한 파일들을 나열하여 보여주면 보는 사람들이
해당 파일을 피해서 작업하지 않을까? 라는 생각에 넣게 되었다.

 

작업 내역

작업 내역은 말 그대로 이 사람이 어떤 작업을 했는지 알기 위해서 필요했다.
또한 체크리스트 형식으로 해서 스스로도 어떤 작업을 진행했는지 파악하고,
이로 인해 빠트린건 없는지 다시 한번 확인할 수도 있기 때문에 넣게 되었다.

 

참고 사항

참고 사항에는 부가적으로 설명하고 싶은 내용이나 기타 이슈 사항, 질문 등을 적기 위해 추가했다.

 

 

이전 PR 템플릿을 보고 수정하고 싶은 부분이 생겼다.

GitHub에서 Issue를 작성했다면 Issue 번호작업 내역, 스크린샷, 참고 사항을 넣을 것 같다.

 

수정한 파일 목록은 따로 확인할 수 있기 때문에 굳이 넣을 필요는 없을 것 같아서 제외하는 게 나을 것 같다.

이슈가 있다면 이슈 번호도 함께 넣는 것이 도움이 될 것 같고 스크린샷도 있으면 작업 내용을 더 이해하기 쉬울 것 같아서 추가할 것 같다.

 

사람마다 생각은 다르겠지만, 내가 생각했을 때는 위의 내용들이 필수로 들어가야 리뷰어들이 내용을 쉽게 파악할 수 있을 것 같다!


PR 템플릿 설정 방법

 

PR 템플릿 설정 방법은 엄청 간단하다.

 

1. 프로젝트의 최상위 경로에서 .github 폴더를 생성한다.

2. .github 폴더 안에 PULL_REQUEST_TEMPLATE.md 파일을 생성한다.

3. 마크다운 문법으로 원하는 PR 템플릿을 작성하면 끝!


내가 생각했을 때의 PR 템플릿의 이점

 

개인적으로는 매번 PR을 따로 작성하지 않아도 돼서 시간이 조금이라도 단축된다는 점이 좋은 것 같다.

또한 PR 템플릿에 중요한 내용을 주로 적용시켰기 때문에 작성하면서 작업 내역 등을 다시 한번 확인할 수 있고,

그로 인해 빠트린 부분이 없는지 생각하며 실수를 방지할 수 있을 것 같다.

리뷰어로써도 중요한 내용이 적혀있기 때문에 조금은 더 코드를 파악하기 용이할 것 같다.

 

팀적으로는 일관된 템플릿을 사용하는 게 팀원들이 PR을 확인했을 때 좋을 것 같고,

더불어 이렇게 템플릿이 있을 경우 나중에 새로운 팀원이 들어왔을 때도 편하지 않을까 하는 생각이 들었다.

아무래도 이렇게 규칙이 조금은 있는 편이 협업할 때 좋은 것 같다고 느끼기 때문일지도 ㅎㅎ .. 

 

 

프로젝트마다 GitHub 이슈를 잘 활용하지 않아서 몰랐는데 이슈 템플릿도 만들 수 있다고 한다.
PR 템플릿과는 다르게 여러 개의 템플릿을 만들 수 있다는데 이 내용은 다른 포스트에 정리할 예정이다!

'공부 > Git & GitHub' 카테고리의 다른 글

[GitHub] 좋은 PR이란 무엇일까?  (0) 2025.04.29

+ Recent posts