← Notes

Git rebase & worktree

git
2분 읽기

Git rebase & worktree

rebase

남의 작업(main)이 앞으로 갔을 때, 내 커밋들을 그 끝에 다시 붙이는 것.

전:
A - B - C          (main)
     \
      D - E        (내 브랜치)

후 (git rebase main):
A - B - C - D' - E'

D, E가 재작성되어 C 뒤에 붙음 (커밋 해시 바뀜).

merge랑 차이

결과 코드는 같음. 히스토리 모양이 다름.

  • merge → 가지 모양, merge commit 생김, 히스토리 보존
  • rebase → 일직선, 깔끔하지만 커밋 재작성

언제

  • PR 올리기 전에 main 최신화할 때 → rebase
  • PR 최종 합칠 때 → merge

명령어

git rebase main

# 충돌 나면
git rebase --continue
git rebase --abort

# 커밋 정리 (최근 3개)
git rebase -i HEAD~3

주의

이미 push해서 팀이 같이 쓰는 브랜치에선 쓰지 말 것. 혼자 쓰는 브랜치에서만.


worktree

같은 repo를 여러 폴더에서 동시에 열 수 있는 기능. .git은 하나인데 브랜치를 따로 체크아웃.

git worktree add ../repo-hotfix hotfix/login-bug
git worktree list
git worktree remove ../repo-hotfix

각 폴더는 독립. /repo-hotfix에서 커밋해도 feature 브랜치랑 관계없음.

언제 유용

  • 빌드가 무거워서 브랜치 전환 시 캐시 날아가는 게 아까울 때
  • IDE 인덱싱이 브랜치 전환마다 느릴 때
  • 두 브랜치를 나란히 보면서 비교할 때

대부분의 경우는 git stash + 브랜치 전환으로 충분함.

sunshinemoon · 2026