깃허브 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 Commit | Squash | Rebase |
|---|---|---|---|
| 커밋 히스토리 | 유지 | 압축됨 | 유지 |
| 병합 커밋 | O | X | X |
| 히스토리 깔끔함 | 중간 | 매우 깔끔 | 깔끔 |
| 충돌 해결 기록 | merge 커밋에 남음 | 사라짐 | 사라짐 |
| 적합한 상황 | 협업, 구조 보존 | 커밋 정리 | 직선 기록 유지 |
추천 사용 상황 요약
| 상황 | 추천 방식 |
|---|---|
| 여러 명이 작업한 브랜치 병합 | Create a merge commit |
| 혼자 작업, 커밋이 너무 많음 | Squash and merge |
| 커밋 단위 유지 + 직선 히스토리 원함 | Rebase and merge |
| 오픈소스, 기록 추적 용이 | Merge Commit 또는 Rebase |
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.