간단 정리/기타

[간단 정리] Git Merge 방식

kim-dev 2024. 9. 1. 18:34
반응형

Git을 사용하는 이유는 당연하게도 다양한 브랜치를 만들어 유연하게 코드를 작성하기 위해서이다.
그러나 셀 수 없이 많은 브랜치를 만들어 그 브랜치들을 모두 Merge한다면...? 코드의 히스토리는 매우 지저분해질 것이다.

 

그래서 Git에서는 여러 Merge 방식들을 제공하고 있는데, 대표적으로 아래 3가지가 있다.

  • Merge : 일반적인 Merge 방식. 브랜치의 모든 커밋 내역들이 main 브랜치에 함께 Merge된다.
    • 3-Way Merge: main 브랜치에 수정 내역이 있는 경우, 수정된 main의 커밋 + Merge하려는 브랜치의 커밋을 한 새로운 커밋 내역 생성
    • Fast-Forward Merge: main 브랜치에 수정 내역이 없는 경우, 그냥 main 브랜치 맨 뒤에 Merge
  • Squash Merge : Merge하려는 브랜치의 커밋 내역들을 합쳐 하나의 커밋으로 만든 후 Merge하는 방식. 일반적인 Merge와 달리 커밋 내역이 하나만 저장되므로 깔끔한 히스토리를 만들 수 있다.
  • Rebase Merge : main 브랜치에 수정 내역이 있는데 3-way merge 하기 싫은 경우, base 커밋을 main 브랜치의 가장 최근 커밋 지점으로 rebase 한 후 fast-forward Merge