포스트

[GitHub 100일 챌린지] Day 60 - Pull Request 머지 과정

[GitHub 100일 챌린지] Day 60 - Pull Request 머지 과정

100일 챌린지 Day 60 - PR이 승인된 후 머지되는 과정과 머지 전략을 이해합니다.

배울 내용

  1. PR 머지 조건과 체크 사항
  2. 세 가지 머지 전략
  3. 머지 후 정리 작업

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 라이센스를 따릅니다.