[GitHub 100일 챌린지] Day 60 - Pull Request 머지 과정
[GitHub 100일 챌린지] Day 60 - Pull Request 머지 과정
100일 챌린지 Day 60 - PR이 승인된 후 머지되는 과정과 머지 전략을 이해합니다.
배울 내용
- PR 머지 조건과 체크 사항
- 세 가지 머지 전략
- 머지 후 정리 작업
1. 머지 가능 조건
필수 조건:
- ✅ 최소 1명 이상 Approve
- ✅ 모든 CI 테스트 통과
- ✅ 충돌 없음
- ✅ Required reviews 충족
2. 세 가지 머지 전략
Merge Commit
gitGraph
commit id: "A"
commit id: "B"
branch feature
commit id: "C"
commit id: "D"
checkout main
merge feature id: "Merge PR #123"
특징:
- 모든 커밋 히스토리 보존
- Merge 커밋 생성
- 히스토리 복잡해질 수 있음
Squash and Merge
gitGraph
commit id: "A"
commit id: "B"
commit id: "C+D (Squashed)"
특징:
- 모든 커밋을 하나로 압축
- 깔끔한 히스토리
- 개별 커밋 히스토리 손실
Rebase and Merge
gitGraph
commit id: "A"
commit id: "B"
commit id: "C'"
commit id: "D'"
특징:
- 선형 히스토리 유지
- 각 커밋 보존
- 커밋 해시 변경
3. 전략별 사용 시점
| 전략 | 사용 시점 |
|---|---|
| Merge | 히스토리 보존 중요 |
| Squash | 실험적 커밋 많음 |
| Rebase | 깔끔한 선형 히스토리 원함 |
4. 머지 과정
메인테이너가 머지
1
2
3
4
5
1. PR 검토 완료
2. "Merge pull request" 클릭
3. 머지 전략 선택
4. Merge 확정
5. 브랜치 삭제 (선택)
자동 머지
1
2
3
4
5
6
7
8
9
10
11
# .github/workflows/auto-merge.yml
name: Auto Merge
on:
pull_request_review:
types: [submitted]
jobs:
auto-merge:
if: github.event.review.state == 'approved'
runs-on: ubuntu-latest
steps:
- uses: pascalgn/automerge-action@v0.15.6
5. 머지 후 정리
기여자 입장
1
2
3
4
5
6
7
8
9
10
11
12
# 1. Main 브랜치 업데이트
git checkout main
git fetch upstream
git merge upstream/main
git push origin main
# 2. 작업 브랜치 삭제
git branch -d feature-branch
git push origin --delete feature-branch
# 3. 감사 인사
# PR에 댓글 작성
메인테이너 입장
1
2
3
4
5
6
7
# 1. 릴리스 노트 작성
# CHANGELOG.md 업데이트
# 2. 기여자 크레딧
# Contributors 업데이트
# 3. 다음 버전 계획
6. 머지 취소
방금 머지한 경우
1
2
git revert -m 1 <merge-commit-hash>
git push origin main
오래된 머지
1
2
# 신중하게 접근
# 새 PR로 수정하는 게 더 안전
7. 충돌 해결
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 머지 전 충돌 발생 시
# 1. 로컬에서 main 병합
git checkout feature-branch
git fetch upstream
git merge upstream/main
# 2. 충돌 해결
# 파일 수정
# 3. 커밋 & Push
git add .
git commit -m "Resolve merge conflicts"
git push origin feature-branch
# 4. PR 자동 업데이트됨
8. 베스트 프랙티스
머지 전:
- 모든 리뷰 코멘트 처리
- CI 통과 확인
- 충돌 해결
- 커밋 메시지 정리
머지 후:
- 브랜치 삭제
- 로컬 main 업데이트
- 관련 Issue 확인
- 감사 인사
정리
완료 체크:
- 세 가지 머지 전략을 설명할 수 있다
- 머지 가능 조건을 확인할 수 있다
- 머지 후 정리 작업을 수행할 수 있다
핵심 요약:
- Merge / Squash / Rebase 전략
- 승인 + CI 통과 = 머지 가능
- 머지 후 브랜치 삭제 및 정리
Phase 6 완료! 🎉 오픈소스 기여의 전체 과정을 마스터했습니다!
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
