본문 바로가기
프로그래밍/Git

Git Rebase 란?

by 신나요 2025. 4. 9.

깃 리베이스 왜 써야되?

Git을 쓰다 보면 merge는 익숙한데 rebase는 왠지 어렵고 무서운 명령어처럼 느껴질 때가 많습니다. 하지만 개념을 정확히 이해하면 rebase는 Git 히스토리를 깔끔하게 정리해주는 강력한 도구가 될 수 있습니다. 이 글에서는 rebase의 기본 개념부터 실전 사용법, 주의사항까지 단계별로 정리해드릴게요.


Rebase란?

간단히 말하면, 리베이스는 브랜치의 시작점을 다른 커밋으로 바꿔서, 해당 커밋 이후에 내가 만든 커밋들을 새롭게 다시 쌓는 작업입니다.

즉, 브랜치를 “다시 베이스(base)” 위에 얹는다는 뜻이에요.


예시로 살펴보기

1️⃣ 리베이스 전

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

 

  • main은 A → B → C
  • feature는 B에서 갈라져 D, E 커밋이 있어요.

 

2️⃣ git rebase main 실행

main:    A---B---C
                 |
feature:         D'---E'
  • feature 브랜치가 C를 기준으로 다시 작성됨
  • D’, E’는 기존 커밋을 복사해서 새로 만든 것 (즉, 커밋 ID가 바뀜)

Rebase를 사용하는 이유

1. 히스토리를 직관적으로 정리하고 싶을 때

  • merge는 커밋 그래프에 분기(branch)가 많이 생기는데,
  • rebase는 브랜치를 한 줄로 정리해줘서 git log가 깔끔해집니다.

2. 협업 전에 내 브랜치를 최신 상태로 만들고 싶을 때

  • git pull --rebase를 사용하면, 최신 코드를 기반으로 내 변경 사항을 정리할 수 있습니다.

실전 명령어

🔹 기본 리베이스

git checkout feature
git rebase main

🔹 pull 시 리베이스

git pull --rebase

🔹 인터랙티브 리베이스 (커밋 정리용)

git rebase -i HEAD~3
  • 최근 3개의 커밋을 편집, 합치기, 메시지 수정 등이 가능

⚠️ Rebase 사용할 때 주의사항

  • 공유된 브랜치에서는 rebase를 사용하지 마세요.
    • 이미 다른 사람이 가져간 커밋의 히스토리를 변경하면 충돌이나 문제 발생 가능
  • 커밋이 사라진 것처럼 보일 수 있어요 (하지만 reflog로 복구 가능)

 Merge와의 차이

구분 merge rebase
히스토리 브랜치가 분기된 모습 유지 일직선 히스토리
커밋 수 병합 커밋이 생김 병합 커밋 없음
충돌 처리 병합 중 충돌 커밋 하나하나마다 충돌 가능

 마무리

rebase는 처음에는 조금 낯설 수 있지만, 정확히 이해하고 잘 사용하면 협업도 깔끔하게, 로그도 명확하게 만들 수 있는 훌륭한 도구입니다.
작업 히스토리를 예쁘게 정리하고 싶다면, rebase에 꼭 익숙해져 보세요!

댓글