[Git] merge vs. rebase
merge
- 두 브랜치의 내용을 합쳐 새로운 커밋을 만드는 작업
- 병합 시 merge commit이 생성될 수 있음
- 브랜치의 기존 커밋 기록이 유지
- 협업 시 히스토리 보존이 중요할 때 사용
- 히스토리가 복잡해질 수 있으나 협업에서 안전
rebase
- 한 브랜치의 커밋을 다른 브랜치의 최신 커밋 뒤로 재배치
- 기존 커밋을 기반으로 새로운 커밋이 다시 생성됨 (히스토리 재작성)
- 브랜치의 커밋 히스토리를 선형적으로 유지하고 싶을 때 사용
- 공유된 브랜치에서는 사용 주의
- 예시
main: A → B → Cfeature: B에서 분기 → D → Egit rebase main: main 브랜치로 리베이스- D와 E 커밋의 변경 사항 기억
- 기준 브랜치를 C로 이동
- C 위에 D의 변경사항을 새 커밋으로 생성
- 그 위에 E의 변경사항을 새 커밋으로 생성
- 최종
feature: A → B → C → D’ → E’-
D’와 E’는 새로운 커밋ID를 가짐
→ 협업 시 충돌, 강제 push, 히스토리 꼬임 발생
-
Leave a comment