[Git]

[Git] rebase (feat. SourceTree)

극꼼 2021. 3. 19. 12:46
반응형


<rebase란?>

rebase는 말 그대로 베이스(branch)를 재배치한다는 뜻입니다.

merge를 사용하면 히스토리를 봤을 때 뿌리가 여러개로 나뉘게 되고, branch가 매우 많은 상황이라면 히스토리를 깔끔하게 보기가 어렵습니다. 이럴 때 rebase로 베이스를 다시 정의함으로써 새로 커밋 라인을 정리하여 히스토리를 깔끔하게 볼 수 있게 해줍니다. 

 

이렇게 말로만 보면 이해가 어려울 수 있는데요, merge랑 어떻게 다른건지 먼저 비교해보도록 하겠습니다. 


<rebase와 merge의 차이점>

이렇게 master 브랜치의 커밋4, testBranch의 커밋3가 있습니다. 

커밋3와 커밋4를 merge, rebase를 할 경우 아래와 같은 그림이 됩니다. 

 

 

merge는 이렇게 새로운 커밋이 생깁니다. 같은 브랜치로 합쳐졌는데, 커밋 히스토리를 볼 때 위와 같이 나뉘어져있어 히스토리를 보기가 어려워집니다. 

 

 

rebase는 이렇게 하나의 브랜치로 합쳐집니다. 히스토리가 깔끔해졌음을 알 수 있습니다. 

 


<소스트리로 rebase 실습>

테스트를 위해 다음과 같이 rebaseBranch를 만들었고, rebaseBranch와 master 브랜치 둘 다에서 각각 커밋을 해주었습니다. 이 두 커밋을 rebase를 이용해 합치는 작업을 해보겠습니다.

 

1. rebaseBranch에 체크아웃

 

2. master브랜치를 우클릭 후, '현재 변경사항을 master에 재배치' 클릭

이렇게 하나의 브랜치로 깔끔하게 커밋되었습니다. 

 

3. master로 체크아웃

 

4. rebaseBranch와 master병합(fast-forward)

rebase 실습 끝!

반응형