GitGit/GitHub 기초 · 5입문

협업 워크플로우 — PR, Fork, Code Review

GitGitHubPullRequestFork협업CodeReview

팀 협업의 흐름

flowchart LR
    DEV["개발자\n브랜치 생성 → 작업 → Push"]
    PR["Pull Request\n변경사항 제안"]
    REVIEW["코드 리뷰\n피드백 + 수정"]
    MERGE["Merge\nmain에 통합"]

    DEV --> PR --> REVIEW --> MERGE

Feature Branch 워크플로우

팀에서 가장 많이 쓰는 방식입니다.

# 1. 최신 main을 받아옴
git switch main
git pull origin main

# 2. 기능 브랜치 생성
git switch -c feature/user-profile

# 3. 작업 및 커밋
git add .
git commit -m "feat: 사용자 프로필 페이지 추가"

# 4. 원격에 push
git push -u origin feature/user-profile

# 5. GitHub에서 Pull Request 생성

Pull Request 만들기

GitHub에서 브랜치를 push하면 "Compare & pull request" 버튼이 나타납니다.

좋은 PR 작성법

## 변경 사항
- 사용자 프로필 페이지 추가
- 아바타 이미지 업로드 기능
- 프로필 수정 폼

## 테스트 방법
1. /profile 페이지 접속
2. 이미지 업로드 테스트
3. 폼 저장 확인

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

## 관련 이슈
Closes #42

코드 리뷰

flowchart TB
    PR["PR 생성"]
    R1["리뷰어 지정"]
    R2["코드 검토\n(Comments, Suggestions)"]
    R3{"Approve?"}
    FIX["수정 요청\n(Request Changes)"]
    MERGE["Merge"]

    PR --> R1 --> R2 --> R3
    R3 -->|"No"| FIX --> R2
    R3 -->|"Yes"| MERGE

리뷰 댓글 반영

# 리뷰 피드백 수정 후
git add .
git commit -m "fix: 리뷰 피드백 반영 — 에러 처리 추가"
git push

# PR에 자동으로 새 커밋이 반영됨

Fork: 오픈소스 기여

남의 저장소에 직접 push 권한이 없을 때 사용합니다.

flowchart LR
    UPSTREAM["원본 저장소\n(upstream)"]
    FORK["내 Fork\n(origin)"]
    LOCAL["로컬"]

    UPSTREAM -->|"Fork"| FORK
    FORK -->|"clone"| LOCAL
    LOCAL -->|"push"| FORK
    FORK -->|"PR"| UPSTREAM
    UPSTREAM -->|"sync"| LOCAL
# 1. GitHub에서 Fork 클릭

# 2. 내 Fork를 clone
git clone https://github.com/my-username/original-project.git
cd original-project

# 3. 원본 저장소를 upstream으로 등록
git remote add upstream https://github.com/original-owner/original-project.git

# 4. 작업 후 내 Fork에 push
git push origin feature/my-fix

# 5. 원본 저장소로 PR 생성 (GitHub에서)

# 6. 원본 저장소 최신화 동기화
git fetch upstream
git merge upstream/main

Issue 연동

# 커밋 메시지에 이슈 번호를 포함하면 자동 연결
git commit -m "fix: 로그인 버그 수정 (#42)"

# PR 병합 시 이슈 자동 닫기
# PR 본문에 이렇게 작성:
# Closes #42
# Fixes #42
# Resolves #42

브랜치 보호 설정 (GitHub)

Settings → Branches → Add rule에서:

  • Require a pull request before merging: PR 없이 직접 push 금지
  • Require approvals: 최소 N명 승인 필요
  • Require status checks: CI 통과 필수

정리

개념설명
Feature Branch기능별 독립 브랜치 → PR → Merge
Pull Request변경사항 제안 + 코드 리뷰
Fork타인 저장소 복사 → 오픈소스 기여
upstreamFork의 원본 저장소
브랜치 보호main 직접 push 방지

다음 편에서는 고급 기능 — stash, rebase, cherry-pick, 되돌리기 등 실무에서 자주 쓰는 기법을 배웁니다.

궁금한 점이 있으신가요?

협업·의뢰는 아래로, 가벼운 소통은 인스타그램 @bluefox._.hi도 환영이에요.