Merge는 branch를 통합하는 것이고, Rebase는 branch의 base를 옮긴다.
Merge나 Rebase나 branch간 내용을 합치기 위한 방법이다. 두 방법은 최종 내용 또한 같다.
Merge의 경우
다른 branch에서 여태까지 commit한 내용을 하나의 merge commit으로 합치는 것. 브랜치가 엄청 많아지면 히스토리를 보기 어렵다.
Rebase의 경우
1) base의 위치를 변경해서 다른 branch에서 commit한 내역을 최신으로 보고 그대로 끌어오는 식으로 합치는 것
→ 중복 로그를 남기지 않고, merge log를 줄여 히스토리를 깔끔하게 정리할 수 있어 Rebase는 주로 히스토리를 깔끔하게 유지하기 위해 사용한다.
2) Rebase는 히스토리를 지운다. 이로인해 Conflict가 날수도 있고, 데이터의 유실이 일어날 수 있다.
3) 다른사람이 그 Branch에서 작업중일 수도 있기 때문에 공개된 (다른사람들이 접근할 수도있는) Branch에서 Rebase하면 안된다.