Git

Git rebase, 이렇게 이해하면 쉽다! merge와의 차이점과 시각적 흐름 정리

jonbeo 2025. 7. 14. 10:41
반응형

 

 

Git을 쓰다 보면 merge는 익숙한데,
rebase는 뭔가 무섭고 어렵게 느껴지죠?

하지만 rebase를 제대로 알면
더 깔끔하고 일직선 같은 Git 히스토리를 만들 수 있습니다.

이번 글에서는 rebase의 개념부터 실습 예제,
그리고 merge와 비교한 시각적 흐름도까지 함께 정리해보겠습니다.


 

✅ 기본 개념 정리: merge vs rebase

항목 merge rebase
히스토리 브랜치 흐름을 보존 히스토리를 재작성
커밋 기록 병합 커밋(merge commit) 생성 병합 커밋 없이 재배치
사용 용도 협업 히스토리 보존 깔끔한 커밋 라인 유지
협업 안정성 안정적 신중히 사용해야 함

 


 

1️⃣ 실전 예제 흐름

git checkout feature
git rebase main

 

위 명령어의 뜻은:
“feature 브랜치의 커밋들을, main 브랜치 기준 위에 다시 쌓겠다”

즉, 마치 feature 브랜치를 처음부터 main에서 파생된 것처럼 만드는 거예요.


→ 기존:

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

 

→ rebase 후:

main:    A---B---C---D'---E'

 


 

2️⃣ rebase와 merge 커밋 비교

# merge 방식
git checkout main
git merge feature

 

→ 병합 커밋이 생기고 브랜치 히스토리가 분기된 채 유지됨
→ 협업 시 누가 뭘 했는지 명확

# rebase 방식
git checkout feature
git rebase main

 

→ 병합 커밋 없이 히스토리가 정리됨
→ 혼자 작업하거나 푸시 전이라면 깔끔한 히스토리 관리 가능


 

✅ rebase 시 주의할 점

  • 이미 푸시한 커밋을 rebase하면 절대 안 됩니다!
    → 강제 푸시(git push --force)가 필요하고, 협업자 히스토리가 꼬일 수 있어요
  • 혼자 작업할 때는 적극 활용 가능
  • 협업할 때는 rebase 대신 merge 권장 (또는 PR 머지 시 squash merge)

 

✅ 인터랙티브 rebase로 커밋 정리까지 가능!

git rebase -i HEAD~4

 

→ 최근 4개의 커밋을 수정, 삭제, 합치기 등의 작업 가능

 

예시 화면:

pick f1a2b3d 커밋 메시지 1
pick a4c5d6e 커밋 메시지 2

 

pickreword로 바꾸면 커밋 메시지를 수정할 수 있음


 

✅ 마무리하며

rebase는 익숙해지면 정말 강력한 도구입니다.
히스토리를 깔끔하게 정리하고 싶은 분께 강력 추천!
단, 협업 시에는 항상 조심, 이미 푸시된 커밋에는 사용 주의하세요.

반응형