[Git] merge vs. rebase

merge

  • 두 브랜치의 내용을 합쳐 새로운 커밋을 만드는 작업
    • 병합 시 merge commit이 생성될 수 있음
  • 브랜치의 기존 커밋 기록이 유지
  • 협업 시 히스토리 보존이 중요할 때 사용
  • 히스토리가 복잡해질 수 있으나 협업에서 안전

rebase

  • 한 브랜치의 커밋을 다른 브랜치의 최신 커밋 뒤로 재배치
  • 기존 커밋을 기반으로 새로운 커밋이 다시 생성됨 (히스토리 재작성)
  • 브랜치의 커밋 히스토리를 선형적으로 유지하고 싶을 때 사용
  • 공유된 브랜치에서는 사용 주의
  • 예시
    • main: A → B → C
    • feature: B에서 분기 → D → E
    • git rebase main: main 브랜치로 리베이스
      1. D와 E 커밋의 변경 사항 기억
      2. 기준 브랜치를 C로 이동
      3. C 위에 D의 변경사항을 새 커밋으로 생성
      4. 그 위에 E의 변경사항을 새 커밋으로 생성
    • 최종 feature: A → B → C → D’ → E’
      • D’와 E’는 새로운 커밋ID를 가짐

        → 협업 시 충돌, 강제 push, 히스토리 꼬임 발생

Categories:

Updated:

Leave a comment