Merge와 Rebase는 언제 사용할까?

git

Merge와 Rebase는 언제 사용할까?

Git을 공부하다 보면 merge와 rebase라는 두 가지 방식이 자주 등장한다. 둘 다 브랜치의 변경 사항을 반영하기 위한 명령어지만, 사용하는 상황과 결과가 조금 다르다.

Merge를 사용할 때

보통 협업 프로젝트에서는 merge가 많이 사용된다. 이유는 단순하다. 브랜치 간의 변경 내역을 그대로 기록하면서 합칠 수 있기 때문이다.

다만 단점도 있다. merge를 계속 사용하다 보면 브랜치들이 얽히면서 커밋 히스토리가 복잡해진다. 그만큼 히스토리를 관리하기가 어려워진다.

Code
master:  A --- B ----------- E --- F
                 \               /
feature:          C --- D -------

위 그림처럼, merge는 브랜치의 흐름이 그대로 남는다. 변경 내역을 보존하는 대신 히스토리가 갈라졌다 합쳐지는 형태가 된다.

Rebase를 사용할 때

이럴 때 rebase를 활용할 수 있다. rebase는 말 그대로 내 브랜치를 최신 상태로 재배치해서 히스토리를 깔끔하게 만든다.

특히 공유 브랜치(main, develop 등)의 최신 변경 사항을 반영할 때 자주 쓰인다.

Code
master:  A --- B --- E --- F
feature:              C' --- D'

rebase를 하면 feature 브랜치가 master 브랜치 뒤로 재배치되면서 커밋 히스토리가 한 줄로 이어진다. 결과적으로 이력이 깔끔해지고, 프로젝트 관리 차원에서도 보기 좋아진다.