Git | GitLab

[Git] rebase - 브랜치 base 재지정

비번변경 2022. 11. 20. 00:40

Rebase

두 개의 공통 base를 가진 브랜치에서 한 브랜치의 base를 다른 브랜치의 최신 커밋으로 옮기는 작업이다. 문자 그대로 base를 다시 설정하는 작업이다. 브랜치를 합치는 방법 중 하나이기도 하다.

git rebase

 

장단점

장점

1. 공유하고 있는 브랜치의 최신 변경 이력을 즉시 반영할 수 있다.

2. rebase는 별도의 커밋 이력을 남기지 않아 보다 깔끔한 commit history를 유지할 수 있다.

 

단점

1. 충돌이 발생하면 각 commit마다 충돌을 해결해주어야 한다. 충돌을 해소할 때마다 continue rebase를 해주어야 하는 번거로움이 있을 수 있다.

2. 이미 원격 저장소에 push 한 커밋을 rebase 하는 것은 위험하다.

 

 

방법

현재 Git 저장소 상태가 아래와 같다고 하자. 작업을 하고 있던 브랜치는 Feature이다.

rebase 전

Feature 브랜치의 base를 Main 브랜치로 설정함으로써, Main 브랜치의 최신 변경 이력 기반으로 작업하고자 할 때는 다음과 같이 쓸 수 있다.

git rebase [<upstream>]

# 예시
git checkout Feature
git rebase Main

 

또는 아래와 같이 실행할 수도 있다.

git rebase [<upstream> [<branch>]]

# 예시
git rebase Main Feature

 

rebase한 후의 브랜치 이력은 다음과 같이 변경된다.

rebase 후

 

 

참고 문서

https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase

3.6 Git 브랜치 - Rebase 하기