Git rebase란
한 줄 정의
내 브랜치의 커밋들을 다른 브랜치 맨 위로 “재배치”하는 명령어. [[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]]