Pull Request(PR)의 개념과 전체 협업 흐름을 이해한다. Fork-Clone-Branch-PR-Merge로 이어지는 오픈소스 기여 방식과 팀 내 코드 리뷰 문화를 익힌다.
Pull Request란?
Pull Request(PR)는 "내 브랜치의 변경사항을 메인 브랜치에 합쳐 달라"는 요청입니다. 단순한 코드 병합이 아니라 코드 리뷰, 토론, CI 검증을 거치는 협업의 핵심 단계입니다.
팀 내 협업 워크플로우 (GitHub Flow)
1. main에서 브랜치 생성
git switch -c feature/add-search
2. 기능 개발 & 커밋
git add .
git commit -m "feat: 검색 기능 추가"
3. 원격에 push
git push -u origin feature/add-search
4. GitHub에서 PR 생성
- base: main / compare: feature/add-search
- 제목, 설명 작성
- 리뷰어 지정
5. 코드 리뷰 → 수정 → 재push
# 리뷰어 코멘트 반영 후
git add . && git commit -m "fix: 리뷰 반영 — 오류 처리 추가"
git push
6. 승인(Approve) → Merge
- Merge commit / Squash / Rebase 중 선택
7. 브랜치 삭제
git branch -d feature/add-search
git push origin --delete feature/add-search
오픈소스 기여 워크플로우 (Fork 방식)
# 1. 원본 프로젝트 Fork (GitHub 웹에서 Fork 버튼)
# 2. 내 계정의 Fork를 로컬로 Clone
git clone git@github.com:my-account/project.git
cd project
# 3. 원본 저장소를 upstream으로 등록
git remote add upstream git@github.com:original-author/project.git
git remote -v
# origin → 내 Fork
# upstream → 원본
# 4. 브랜치 생성 & 작업
git switch -c fix/typo-in-readme
# 5. 원본 최신 변경사항 동기화 (자주 해줘야 함)
git fetch upstream
git rebase upstream/main
# 6. 내 Fork에 push & PR 생성
git push origin fix/typo-in-readme
# GitHub에서 "Compare & pull request" 버튼 클릭
좋은 PR 작성법
| 항목 | 나쁜 예 | 좋은 예 |
|---|---|---|
| 제목 | "수정함" | "fix: 검색 결과 0건일 때 빈 화면 표시" |
| 크기 | 500줄 변경 | 200줄 이하 (리뷰 가능한 크기) |
| 설명 | 없음 | 변경 이유, 스크린샷, 테스트 방법 |
| 이슈 연결 | 없음 | "Closes #42" → 머지 시 이슈 자동 종료 |
PR 설명 템플릿 예시
## 변경 내용
- 검색어 없을 때 "결과 없음" 메시지 표시
## 변경 이유
빈 화면이 에러처럼 보여 UX 개선
## 테스트 방법
1. 검색창에 아무것도 입력하지 않고 검색
2. "검색 결과가 없습니다" 문구 확인
Closes #42
코드 리뷰 에티켓
리뷰어로서:
- 코드가 아닌 코드에 대해 말하기 ("이 함수는" X, "이 방식은" O)
- 질문 형식 활용 ("이렇게 하면 어떨까요?")
- Nit(nitpick) 명시: 사소한 제안은 "Nit:" 접두어 사용
- 긍정적인 부분도 코멘트
PR 작성자로서:
- 모든 코멘트에 응답 (반영했으면 "Done", 이견이면 이유 설명)
- 방어적으로 반응하지 않기
- 코멘트 반영 후 re-request review
머지 전략 선택
| 방식 | 이력 | 적합한 상황 |
|---|---|---|
| Merge commit | 브랜치 이력 보존 | 팀 협업, 기능 추적 필요 |
| Squash merge | 커밋 1개로 압축 | 지저분한 WIP 커밋 정리 |
| Rebase merge | 선형 이력 | 깔끔한 이력 선호 팀 |
이슈(Issue) 활용
# gh CLI로 이슈 생성
gh issue create --title "검색 기능 추가" --body "사용자가 이름으로 검색할 수 있어야 함"
# 이슈 목록 확인
gh issue list
# PR에서 이슈 닫기 (커밋 메시지 또는 PR 설명에)
Closes #42
Fixes #42
Resolves #42
관련 검색어 · pull request 방법, github PR 생성, 코드 리뷰 방법, fork clone 차이, github flow, 오픈소스 기여하는 법