ETC

Git Merge vs Rebase: 협업을 위한 브랜치 전략의 이해

Newbie Developer 2025. 5. 5. 17:23

버전 관리를 위해 Git을 사용할 때 가장 자주 마주치는 개념 중 하나가 바로 mergerebase입니다. 두 커맨드는 모두 브랜치를 통합할 때 사용되지만, 내부 동작과 결과물은 상당히 다릅니다.

이번 글에서는 git mergegit rebase의 차이점과 각 방식의 장단점, 그리고 협업 시 어떤 전략이 적합한지 자세히 살펴보겠습니다.


1. 기본 개념

✅ Git Merge란?

merge는 두 개의 브랜치를 통합하는 방식입니다. 병합 과정에서 공통 조상(commit)을 기준으로 새로운 병합 커밋(merge commit)이 생성됩니다.

git checkout main
git merge feature-branch

 

결과: main 브랜치에 feature-branch의 변경사항이 병합되고, 새로운 커밋 하나가 생성됩니다.

✅ Git Rebase란?

rebase는 한 브랜치의 커밋들을 다른 브랜치의 가장 마지막 커밋 위로 다시 쌓는 것입니다. 말 그대로 커밋의 기반(base)을 바꾸는 작업입니다.

git checkout feature-branch
git rebase main

 

결과: feature-branch의 커밋들이 main의 최신 커밋 위에 재적용됩니다. 커밋 해시가 변경되므로 기존과는 다른 히스토리를 갖게 됩니다.

 


2. 시각적 예시

💡 Merge 예시

A---B---C main
     \ 
      D---E feature-branch

# merge 후
A---B---C---F main
     \     /
      D---E

F는 병합 커밋(merge commit)입니다.

 

💡 Rebase 예시

A---B---C main
         \
          D'--E' feature-branch (rebased)

# 커밋 해시가 바뀐 D’, E’

커밋 히스토리가 깔끔해지지만, 실제로는 새로운 커밋이 재작성됩니다.

 


3. 장단점 비교

구분 Merge Rebase
커밋 히스토리 브랜치 합쳐진 흔적이 남음 (복잡) 히스토리가 깔끔하게 정리됨
충돌 처리 병합 시 한 번에 충돌 발생 커밋 하나하나 리베이스 시 충돌 발생 가능
협업 난이도 비교적 안전, 히스토리 추적 용이 강력하지만 실수 시 위험 (특히 공유 브랜치에서)
커밋 보존 기존 커밋 그대로 유지 커밋이 재작성되어 해시값 변경됨 (force push 필요)
 

4. 언제 Merge를 쓰고 언제 Rebase를 써야 할까?

🟢 Merge 추천 상황

  • 공식 브랜치 병합 시 (ex: feature → main)
  • 히스토리 보존이 중요한 경우
  • 여러 개발자와 함께 작업 중인 브랜치

🟡 Rebase 추천 상황

  • 개인 작업 브랜치 정리 시
  • PR 보내기 전에 커밋 정리하고 싶을 때
  • 리뷰 전에 최신 브랜치 내용 반영이 필요할 때

⚠️ 협업 중인 브랜치에서 rebase는 사용을 신중히 해야 합니다. 공유된 커밋을 rebase하면 충돌이나 force push로 인해 다른 개발자와의 충돌 가능성이 높아집니다.


5. 실전 팁

병합 전 최신화 전략

git fetch origin
git rebase origin/main

rebase 후 강제 푸시 필수

git push --force-with-lease
  • 안전한 강제 푸시 방식으로 팀원 변경 사항을 덮어쓰지 않도록 합니다.

🔚 마무리

git merge와 git rebase는 각각 장단점이 뚜렷한 도구입니다. 협업 중이라면 merge 기반 전략이 안전하고 예측 가능하며, 개인 브랜치에서는 rebase로 히스토리를 정리해 보다 깔끔한 기록을 남길 수 있습니다.

👉 핵심은 상황에 맞게 전략을 선택하고, 팀 내 Git 사용 규칙을 명확히 정하는 것!