====== 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, 버전 관리