
Git의 다양한 병합 방법으로 일반적인 Merge, Fast-Forward Merge, Squash Merge, Rebase에 대해서 설명하겠습니다.

일반적인 Merge는 두 개의 분기된 브랜치를 병합할 때 사용되며, 병합 커밋이 생성되어 두 브랜치의 히스토리를 모두 보존합니다.
# main 브랜치로 이동
git checkout main
# feature 브랜치를 main에 병합 (병합 커밋 생성됨)
git merge feature
✅ 주의할 점
⚠️ 문제 상황: 병합 커밋이 너무 많아지는 경우
git checkout main
git merge feature
🔧 해결 방법

Fast-Forward Merge는 병합 대상 브랜치에 새로운 커밋이 없을 때, 단순히 브랜치 포인터를 이동시켜 병합 커밋 없이 히스토리를 유지하는 방법입니다.
# main 브랜치로 이동
git checkout main
# Fast-Forward Merge 수행 (병합 커밋 없이 브랜치 포인터 이동)
git merge --ff feature
✅ 주의할 점
⚠️ 문제 상황: 브랜치 병합 기록이 남지 않음
git checkout main
git merge --ff feature
🔧 해결 방법
병합 커밋을 남기고 싶다면 --no-ff 옵션을 사용.
git merge --no-ff feature
git log --graph를 통해 히스토리를 가시적으로 유지할 수 있음.

Squash Merge는 여러 개의 커밋을 하나로 합쳐서 병합하는 방법으로, 깔끔한 히스토리를 유지하는 데 유용합니다.
# main 브랜치로 이동
git checkout main
# Squash Merge 수행 (병합 후 커밋들을 하나로 합침)
git merge --squash feature
# Squash된 상태에서 수동으로 하나의 커밋을 생성
git commit -m "단일 커밋으로 병합된 기능 분기 변경 사항"
✅ 주의할 점
⚠️ 문제 상황: 개별 커밋 내역이 사라짐
git checkout main
git merge --squash feature
git commit -m "단일 커밋으로 병합된 기능 분기 변경 사항"
🔧 해결 방법

Rebase는 한 브랜치의 변경 사항을 다른 브랜치의 최신 커밋 위로 재배치하여 히스토리를 재구성하는 방법입니다.
# feature 브랜치로 이동
git checkout feature
# feature 브랜치를 main 브랜치의 최신 커밋 위로 재배치
git rebase main
# 만약 충돌이 발생하면 해결한 후
git add .
# Rebase 계속 진행
git rebase --continue
✅ 주의할 점
⚠️ 문제 상황: 원격 브랜치에서 Rebase를 수행한 경우
git checkout feature
git rebase main
🔧 해결 방법
git push --force
하지만 가능하면 git rebase는 로컬에서만 수행하고, 공유된 브랜치에서는 merge를 사용하는 것이 안전.
[출처]
Fast-Forward Merge
Rebase
좋은데요~