Merge 와 Rebase의 차이
merge는 브랜치를 통합하는 개념이고, rebase는 브랜치의 base를 옮긴다는 개념이다.
위 그림에서, merge를 하면 그냥 브랜치를 가져다 다른 부분을 변경 시간에 따라 통합한다.
장점으로는 비파괴적(non-destructive) 이라서 존재하는 브랜치들에 변화를 주지는 않는 것이 있다.
단점으로는 잦은 merge는 git history를 어지럽혀서 가독성을 떨어뜨린다.
위 그림에서, B를 베이스로 시작해서 C와, D-E 브랜치가 생겼을 때, rebase를 해서 D-E의 베이스를 C로 재설정 하는 것을 볼 수 있다.
장점으로는, git history를 깔끔하게 해서 가독성이 좋아진다.
단점으로는, 여럿이 사용하는 public branch에 사용해서는 안된다.
왜 public 브랜치에서는 조심해서 써야하냐, 위 그림과 같이 rebase하면 본인 repository에서의 해당 브랜치 위치와 다른 개발자들의 해당 브랜치 위치가 달라지게 된다. 합치려면 따로 또 merge를 해줘야 한다.