blog

작업 브랜치를 최신 기준 브랜치로 rebase하는 방법

Front-end / Git#Git#rebase#force-with-lease

작업 브랜치(feature/login)를 최신 develop 위로 옮겨, 병합 커밋 없이 기록을 일렬로 정리하는 방법이다.

1. 기준 브랜치 최신화

git fetch origin

로컬 develop으로 이동해 pull할 필요 없이, 원격 브랜치를 바로 기준으로 삼으면 된다.

2. rebase

git switch feature/login
git rebase origin/develop

3. 충돌 해결

rebase는 커밋을 하나씩 다시 적용하므로, 커밋마다 충돌이 날 수 있다.

# 충돌 파일 수정 후
git add <충돌 해결한 파일>
git rebase --continue

# 이 커밋을 건너뛰려면
git rebase --skip

# rebase 시작 전으로 되돌리려면
git rebase --abort

모든 커밋이 적용될 때까지 반복한다.

4. 원격 브랜치 갱신

rebase는 커밋 해시를 새로 만들기 때문에, 이미 push한 브랜치라면 강제 push가 필요하다.

git push --force-with-lease origin feature/login

--force 대신 --force-with-lease를 쓴다. 내가 마지막으로 가져온 이후 다른 사람이 같은 브랜치에 push한 커밋이 있으면 push를 거부해서, 남의 커밋을 덮어쓰는 사고를 막아 준다.

주의

  • 여러 사람이 함께 쓰는 브랜치(develop, main)는 rebase하지 않는다. 다른 사람의 로컬 기록과 어긋난다.
  • 혼자 쓰는 작업 브랜치를 PR 전에 정리하는 용도로 사용한다.