====== Merge ======
**Merge**(병합)는 Git에서 두 개 이상의 브랜치를 하나로 합치는 작업입니다.
===== 📖 정의 =====
Merge는 서로 다른 브랜치의 변경사항을 하나의 브랜치로 통합하는 과정입니다. Git은 자동으로 병합을 시도하지만, 충돌이 발생하면 수동으로 해결해야 합니다.
===== 🔄 병합 유형 =====
==== Fast-forward Merge ====
* 단순한 병합
* 히스토리가 선형적
* 충돌 없음
==== Three-way Merge ====
* 병합 커밋 생성
* 두 브랜치의 공통 조상 사용
* 복잡한 병합에 사용
==== Squash Merge ====
* 여러 커밋을 하나로 압축
* 깔끔한 히스토리 유지
* 기능 단위로 정리
===== 🚀 기본 명령어 =====
# 현재 브랜치에 다른 브랜치 병합
git merge feature-branch
# Fast-forward 방지 (병합 커밋 강제 생성)
git merge --no-ff feature-branch
# Squash 병합
git merge --squash feature-branch
# 병합 취소
git merge --abort
# 병합 상태 확인
git status
===== ⚠️ 병합 충돌 =====
==== 충돌 발생 상황 ====
* 같은 파일의 같은 줄을 수정
* 한 브랜치에서 파일 삭제, 다른 브랜치에서 수정
* 파일 이름 변경 충돌
==== 충돌 해결 과정 ====
# 1. 병합 시도
git merge feature-branch
# 2. 충돌 파일 확인
git status
# 3. 충돌 파일 수동 편집
# <<<<<<< HEAD
# 현재 브랜치 내용
# =======
# 병합할 브랜치 내용
# >>>>>>> feature-branch
# 4. 해결 후 스테이징
git add conflicted-file.txt
# 5. 병합 완료
git commit
===== 🎯 병합 전략 =====
==== Merge 전략 ====
* 히스토리 보존
* 브랜치 구조 유지
* 복잡한 히스토리
==== Rebase 전략 ====
* 선형 히스토리
* 깔끔한 구조
* 히스토리 재작성
===== 🛠️ 고급 병합 기법 =====
==== 부분 병합 ====
# 특정 파일만 병합
git checkout feature-branch -- specific-file.txt
git commit -m "Merge specific file from feature-branch"
==== 체리픽 ====
# 특정 커밋만 가져오기
git cherry-pick commit-hash
===== 🔗 관련 용어 =====
* [[wiki:glossary:development_tools:git:git|Git]] - 버전 관리 시스템
* [[wiki:glossary:development_tools:git:branch|Branch]] - 브랜치
* [[wiki:glossary:development_tools:git:commit|Commit]] - 커밋
* [[wiki:glossary:development_tools:git:pull_request|Pull Request]] - 풀 리퀘스트
===== 📚 관련 문서 =====
* [[wiki:it:github:branch_management|브랜치 관리]]
* [[wiki:it:github:troubleshooting|문제 해결 가이드]]
----
**카테고리:** [[wiki:glossary:start|용어집]] | **관련 기술:** Git, 버전 관리