A---B---C main
\
D---E feature
A---B---C---D---E main
A---B---C main
\
D---E feature
A---B---C---F main
\ /
D---E feature
A---B---C main
\
D---E feature
A---B---C---F main
\
D---E feature (그대로)
# Rebase 전
A---B---C main
\
D---E feature
# Rebase 실행 후 (feature 브랜치가 main 브랜치의 최신 커밋 이후로 재배치됨)
A---B---C main
\
D'---E' feature
# feature 브랜치를 main 브랜치로 merge하여 최종 결과(선형적인 히스토리 유지)
A---B---C---D'---E' main
rebase를 실행하면 각 개발자가 작업 중인 feature 브랜치에서 main의 최신 커밋과의 충돌을 해결하고 PR을 요청하게 되면서 협업이 원활해질 수 있다.