한 줄 정의

내 브랜치의 커밋들을 다른 브랜치 맨 위로 “재배치”하는 명령어. [[git/merge]]와 목적은 같지만(브랜치 합치기), 결과로 남는 커밋 히스토리 모양이 다르다.

merge와 뭐가 다른가

  • merge: 두 브랜치의 히스토리를 그대로 두고, “합쳤다”는 새 커밋 하나를 추가로 만듦
  • rebase: 내 커밋들을 새로 다시 쓰는 것처럼, 대상 브랜치 뒤에 순서대로 이어붙임

그 결과 rebase 쪽이 히스토리가 일직선으로 깔끔해짐. 대신 커밋 해시가 전부 바뀐다는 게 핵심 주의사항.

명령어

git checkout feature-branch
git rebase main

충돌 나면:

# 충돌 해결한 파일 git add 후
git rebase --continue

# 그냥 rebase 전체를 취소하고 싶으면
git rebase --abort

주의할 점

  • 이미 원격(GitHub 등)에 push한 커밋은 rebase 하지 말 것 — 커밋 해시가 바뀌어서 팀원들 히스토리랑 꼬임
  • 이 규칙 때문에 “내 로컬 브랜치에서만” rebase 쓰는 게 안전

관련 문서

  • [[git/merge]]
  • [[git/conflict-resolve]]