학습 이유
실무에서 git merge만을 사용하고 있는데 rebase도 활용해보고 싶어졌다.
학습 목표
rebase를 공부하고 실제로 적용해보기
Merge vs Rebase
Merge
- 두 브랜치의 히스토리들이 모두 유지되며 하나의 새로운 커밋으로 두 브랜치를 병합
- 병합 과정에서 충돌이 발생하면 충돌을 해결하고 병합 커밋을 완료
- 브랜치의 히스토리가 명확하게 유지되므로, 협업 시 변경 사항을 쉽게 추적
- 충돌 해결이 단순하며, 병합 과정에서 충돌이 발생하면 Git이 명확하게 알려줌


Rebase
- 한 브랜치의 커밋을 다른 브랜치의 최신 커밋 뒤로 옮겨서 커밋 히스토리를 다시 작성하는 방식
- 브랜치 히스토리를 직선으로 유지하여 깔끔한 커밋 로그 작성이 가능
- 다른 브랜치의 최신 커밋 뒤로 재배치 되면서 새로운 커밋 해시가 생성
- 기존 히스토리가 재작성되므로, 협업 중인 브랜치에서 사용 주의
- 충돌이 발생할 경우 각 커밋 단위로 충돌을 해결해야하며 보다 세분화된 충돌 해결이 가능

언제 사용해야 하나
Merge
- 협업 프로젝트에서 각 브랜치의 히스토리를 유지하고 싶을 때
- 병합 커밋을 통해 브랜치의 통합 시점을 명확히 하고 싶을 떄
- 복잡한 병합 시 충돌을 더 쉽게 해결하고 싶을 때
Rebase
- 깔끔한 직선 히스토리를 유지하고 싶을 때
- 로컬에서 작업할 때, 협업 전 브랜치를 정리하고 싶을 때
- 커밋 단위로 충돌을 세분화하여 해결하고 싶을 때
정리
일반적으로 로컬에서는 rebase, 협업 시에는 merge를 사용한다고 함
이미 remote에 push 한 커밋을 rebase하지 말 것!