git

git Merge VS git Rebase

해로몬 2025. 1. 10. 12:31

1. Git Merge

개념:

  • 두 브랜치의 변경 사항을 병합하여 새로운 커밋(Merge Commit)을 생성.
  • 기본적으로 기존 커밋 히스토리를 유지.

동작:

  • 두 브랜치의 공통 조상에서부터 시작하여 변경 사항을 합침.
  • git merge <branch> 명령어로 사용.

예시:

bash
코드 복사
git checkout main
git merge feature

이력 구조:

sql
코드 복사
*   Merge branch 'feature'
|\\
| * Commit on feature branch
* | Commit on main branch
|/
* Initial commit

장점:

  • 기존 브랜치 히스토리를 보존.
  • 팀 협업에서 충돌이 명확히 드러남.

단점:

  • 이력이 복잡해질 수 있음(특히 많은 브랜치 병합 시).

2. Git Rebase

개념:

  • 한 브랜치의 커밋을 다른 브랜치의 HEAD 위로 재배치.
  • 히스토리를 재작성하여 병합 커밋 없이 깔끔한 직선형 이력을 만듦.

동작:

  • git rebase <branch> 명령어로 사용.
  • 커밋이 새로운 기반 브랜치 위에 "재생성"됨.

예시:

bash
코드 복사
git checkout feature
git rebase main

이력 구조 (Rebase 후):

sql
코드 복사
* Commit on feature branch
* Commit on main branch
* Initial commit

장점:

  • 깔끔하고 직선적인 히스토리를 유지.
  • 변경 사항이 시간순으로 정렬되어 이해하기 쉬움.

단점:

  • 충돌이 발생하면 해결 후 git rebase --continue를 반복해야 함.
  • 공유된 브랜치에서는 사용 금지: 기존 커밋이 재작성되어 다른 팀원이 혼란을 겪을 수 있음.

언제 사용해야 할까?

Use merge:

  • 팀 협업 시: 팀원 간 작업 히스토리를 명확히 구분.
  • 충돌 이력이 중요한 경우.
  • 병합 커밋을 허용하는 프로젝트.

Use rebase:

  • 개인 작업 브랜치 정리: PR(Pull Request)을 제출하기 전에 깔끔한 히스토리를 유지.
  • 긴 이력으로 인한 혼란을 줄이고 싶을 때.
  • 주의 사항
  1. Rebase는 공유된 브랜치에서 하지 말 것
    • 다른 사람이 작업 중인 커밋이 변경되면 협업에 문제가 생김.
  2. 충돌 처리
    • Rebase와 Merge 모두 충돌이 발생할 수 있음.
    • Rebase 충돌 해결: git rebase --continue
    • Merge 충돌 해결: 충돌 수정 후 git commit.

'git' 카테고리의 다른 글

[Git] issue 템플릿 추가하기  (0) 2025.01.10