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 브랜치 뒤로 재배치되면서 커밋 히스토리가 한 줄로 이어진다. 결과적으로 이력이 깔끔해지고, 프로젝트 관리 차원에서도 보기 좋아진다.