Github 풀 리퀘스트와 코드 리뷰

1. Pull Request(PR) 개요

1. Pull Request란?

  • 브랜치에서 작업한 내용을 다른 브랜치(main/develop 등)에 병합해달라고 요청하는 절차

1.2 왜 필요한가?

이유설명
코드 품질 유지리뷰를 통해 실수를 줄이고 품질 향상 가능
협업 효율변경 내용을 공유하고 의견 교환
기록 유지모든 변경사항은 PR로 기록되고 추적 가능

1.3 Pull Request 기본 흐름

  1. 브랜치 생성
  2. 기능 개발
  3. 커밋 및 푸시
  4. GitHub에서 PR 생성
  5. 코드 리뷰 및 승인
  6. 병합(Merge)

1.4 실습: PR 생성부터 병합까지

  • 예제: feature/login 브랜치를 develop에 병합

    1. 브랜치 생성 및 기능 작업

       git checkout -b feature/login develop
       echo "console.log('Login page');" > login.js
       git add .
       git commit -m "✨ Add login page"
       git push -u origin feature/login
      
    2. GitHub에서 Pull Request 생성

      1. GitHub 저장소 방문
      2. “Compare & pull request” 버튼 클릭
      3. base: develop ← compare: feature/login 설정
      4. 제목 및 설명 작성 후 “Create Pull Request”

2. 코드 리뷰

2.1 리뷰어가 확인하는 항목

항목설명
코드 스타일팀 코딩 스타일 가이드 준수 여부
기능 정확성의도한 기능이 정확히 구현되었는가?
보안 문제민감 정보 노출 여부 등
리팩토링더 나은 코드 구조를 제안할 수 있음
테스트관련 테스트 코드가 있는가?

2.2 GitHub에서 리뷰어가 할 수 있는 행동

기능설명
Comment일반적인 의견 추가
Suggestion코드 수정을 제안하는 기능
Approve승인(병합 가능)
Request changes변경 요청 (병합 불가)

2.2.1 예시: 코드에 코멘트 달기

- console.log("Login page");
+ console.log("Login page loaded");

리뷰어: “불필요한 콘솔 로그는 배포 전에 제거해주세요!”

3. Pull Request 병합

3.1 GitHub 웹 UI에서 3가지 병합 방식

병합 방식설명
Merge commit기본 병합 방식. 히스토리를 남김
Squash and merge커밋을 하나로 합쳐 병합 (히스토리 간결)
Rebase and merge커밋 히스토리를 이어붙여 병합 (리베이스 사용 시)

팀 내에서 어떤 병합 방식 사용할지 미리 정해두는 것이 좋음

3.2 PR 병합 후 정리 작업

  • 로컬 브랜치 삭제
git checkout develop
git pull origin develop         # 최신 develop 반영
git branch -d feature/login     # 로컬 브랜치 삭제
git push origin --delete feature/login  # 원격 브랜치 삭제

4. 실습 체크리스트

항목설명완료 여부
기능 브랜치 생성feature/기능명 브랜치로 작업
커밋 및 푸시변경 내용을 GitHub에 푸시
PR 생성GitHub에서 Pull Request 작성
코드 리뷰리뷰어가 피드백 제공
병합 및 브랜치 삭제병합 후 브랜치 삭제

5. PR 작성 시 유용한 템플릿 예시

### 작업 내용
- 로그인 페이지 UI 구현
- 이메일/비밀번호 입력 폼 추가

### 체크리스트
- [x] UI 구현 완료
- [ ] 입력 유효성 검사 추가 예정

### 스크린샷
(이미지 첨부)

### 관련 이슈
- #14

GitHub 저장소에 .github/PULL_REQUEST_TEMPLATE.md 파일을 만들면 자동 적용됨

6. 좋은 코드 리뷰 문화 만들기

6.1 리뷰어의 자세

  • 비판보다 피드백 중심
  • 이해 안 되는 부분은 질문
  • 제안은 대안 제시까지

6.2 작성자의 자세

  • 리뷰는 성장을 위한 기회
  • 방어적 태도보단 열린 자세
  • 리뷰 반영은 신속하게

7. 마무리 요약

개념요약 설명
Pull Request브랜치 작업을 다른 브랜치에 병합 요청
코드 리뷰팀원이 기능, 품질, 보안 등을 체크
병합 방식merge, squash, rebase 중 선택
리뷰 문화상호 존중, 적극적인 피드백이 핵심

부록

  • GitHub UI 핵심 메뉴 정리
항목위치설명
Pull requests상단 메뉴PR 리스트 확인
ReviewersPR 오른쪽 패널리뷰어 지정 가능
ConversationPR 내부 탭전체 리뷰 코멘트
Files changedPR 내부 탭변경된 코드 비교
Merge 버튼PR 하단병합 방식 선택 후 병합 가능
  • 추가 학습 자료

    • GitHub 공식 문서: PR Docs
    • GitHub Actions로 PR 자동 검사 구현
    • GitHub Codespaces로 리뷰 환경 통합