SeouliteLab

Git Merge와 Rebase의 차이 본문

카테고리 없음

Git Merge와 Rebase의 차이

Seoulite Lab 2024. 4. 25. 08:17

Git에서 Merge와 Rebase는 둘 다 브랜치를 통합하는 방법이지만, 각각의 특징과 사용 시 상황에 따른 적합성이 다릅니다. 이 두 명령어의 차이를 알아보고, 각각의 장단점을 살펴보겠습니다.

Merge와 Rebase의 차이

Merge (병합)

Merge는 두 개의 브랜치를 합치는 과정에서 두 브랜치의 공통 조상으로부터 새로운 커밋을 생성합니다. 이 과정에서 새로운 병합 커밋이 생성되고, 브랜치 간의 히스토리가 병합되어 합쳐집니다.

Rebase (재배치)

Rebase는 현재 브랜치의 커밋을 다른 브랜치 위로 이동시키는 작업입니다. 이 과정에서는 두 브랜치 간의 공통 조상을 찾고, 현재 브랜치의 커밋들을 순서대로 다른 브랜치 위에 재배치합니다. 즉, 기존 커밋들을 새로운 기준 브랜치의 끝에 연결합니다.

장단점 비교

Merge의 장단점

  • 장점:
    • 간단하고 직관적입니다.
    • 브랜치의 히스토리가 보존됩니다.
  • 단점:
    • 병합 커밋이 생성되어 브랜치 히스토리가 복잡해질 수 있습니다.
    • Fast-forward 병합 시에는 추가적인 커밋이 생성되지 않지만, 이외의 경우에는 병합 커밋이 생성됩니다.

Rebase의 장단점

  • 장점:
    • 히스토리가 선형적으로 유지되어 깔끔합니다.
    • 커밋 히스토리가 간결해지고, 리뷰하기 쉽습니다.
  • 단점:
    • 다른 브랜치의 커밋을 변경하는 작업이므로 주의가 필요합니다.
    • 강제로 이력을 변경하기 때문에 협업하는 다른 개발자들에게 영향을 줄 수 있습니다.

결론

  • Merge: 브랜치의 히스토리를 보존하고 간단한 작업에 적합합니다.
  • Rebase: 히스토리를 깔끔하게 유지하고, 협업 시에도 사용 가능하며, 커밋을 정리하고 싶을 때 적합합니다.

예제

# Merge
git checkout master
git merge feature_branch

# Rebase
git checkout feature_branch
git rebase master