rebase란 머지와 비슷한 기능이다. rebase란 이름에서 알 수 있듯이 base를 re 즉, 바꾼다는 것이다. 이게 무슨 말이냐면 우리가 머지를 하면 base는 바뀌지 않는다. base를 토대로하고 각 바뀐 브랜치의 최신 커밋들을 3way merge 하는 방식으로 병합을 진행하게 된다. 하지만 rebase는 base를 병합하려는 상대 브랜치의 최신커밋으로 삼아(즉, base가 바뀐것임) 병합을 진행하게 된다. 그렇게 되면 rebase를 했을 때 머지와는 달리 직렬로 커밋이 나아가기 때문에 커밋 히스토리를 보기가 쉬워지게 된다.
즉, 머지와 결과가 조금 다르게 나온다. 그리고 어렵고 위험하니 머지를 사용하되 필요시 rebase를 사용하는 것이 좋다.
rebase 하는 방법
git rebase master(원하는 브랜치)
#충돌났을 때 코드 수정 후 다음의 코드로 rebase 계속 진행
git rebase --continue
rebase를 하게 되면 현재 위치하고 있는 브랜치의 현재까지 바뀌어온 커밋들을에 대해서 처음부터 순서대로 임시저장소에 패치(각 커밋의 차이점)를 임시로 저장 후 그 정보를 가지고 base에 병합을 하게 된다. 그리고 병합이 끝났으면 다음 패치를 토대로 이전에 병합된 커밋에 또 병합 또 병합 이런 식으로 나아가게 된다. 이렇게 되면 결국 로그를 봤을 때 둘이 합쳐져 머지를 할 때의 병렬의 모양이 아닌 직렬의 모양이 된다.