포스트

깃허브 Pull Request 병합 옵션

깃허브 Pull Request 병합 옵션

GitHub Pull Request 병합 옵션 정리

GitHub에서 Pull Request(PR)를 병합할 때 제공되는 3가지 방식은 각각 커밋 히스토리와 협업 흐름에 영향을 미칩니다. 아래는 각 병합 방식의 개념, 장단점, 사용 상황에 대한 정리입니다.


병합 옵션 3가지 개념 정리

병합 방식주요 특징결과
Create a merge commit브랜치를 통합하면서 병합 커밋을 남김히스토리 보존 + 브랜치 구조 유지
Squash and merge여러 커밋을 하나로 압축히스토리 단순화
Rebase and merge브랜치 커밋을 베이스 브랜치 위로 재배치직선형 히스토리

1. Create a merge commit

1
git merge feature-branch
  • 병합 시점에 새로운 Merge commit 생성
  • 모든 커밋과 브랜치 구조를 그대로 유지

장점

  • 작업 흐름이 명확히 보임
  • 충돌 해결 내역이 merge 커밋에 남음

단점

  • 커밋 히스토리가 복잡해질 수 있음

사용 상황

  • 협업이 많은 팀, 브랜치 기반 작업 구조를 유지하고 싶을 때

2. Squash and merge

1
git squash feature-branch
  • 브랜치 내의 모든 커밋을 하나의 커밋으로 압축
  • PR 커밋 메시지를 GitHub UI에서 편집 가능

장점

  • 메인 브랜치 히스토리가 매우 깔끔
  • WIP 커밋, 수정 커밋 제거 가능

단점

  • 작업 히스토리 추적 어려움

사용 상황

  • 개인 프로젝트, 세부 커밋을 숨기고 싶을 때

3. Rebase and merge

1
git rebase feature-branch onto main
  • 커밋을 base 브랜치 위로 직선형 재배열
  • 병합 커밋 없이 깔끔한 히스토리 생성

장점

  • 커밋 유지 + 직선형 히스토리
  • 히스토리가 깔끔

단점

  • 충돌 해결 복잡 가능성 있음

사용 상황

  • 커밋을 유지하면서 깔끔한 기록을 원할 때

비교 요약

항목Merge CommitSquashRebase
커밋 히스토리유지압축됨유지
병합 커밋OXX
히스토리 깔끔함중간매우 깔끔깔끔
충돌 해결 기록merge 커밋에 남음사라짐사라짐
적합한 상황협업, 구조 보존커밋 정리직선 기록 유지

추천 사용 상황 요약

상황추천 방식
여러 명이 작업한 브랜치 병합Create a merge commit
혼자 작업, 커밋이 너무 많음Squash and merge
커밋 단위 유지 + 직선 히스토리 원함Rebase and merge
오픈소스, 기록 추적 용이Merge Commit 또는 Rebase
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.