팀 협업의 흐름
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 | 타인 저장소 복사 → 오픈소스 기여 |
| upstream | Fork의 원본 저장소 |
| 브랜치 보호 | main 직접 push 방지 |
다음 편에서는 고급 기능 — stash, rebase, cherry-pick, 되돌리기 등 실무에서 자주 쓰는 기법을 배웁니다.