Git

깃허브에서 merge와 rebase의 차이

DungGi 2024. 6. 28. 04:54

1. Merge:

- 작동 방식:
  - 두 브랜치의 마지막 커밋을 가져와 새로운 "병합 커밋"을 생성합니다.
  - 원본 브랜치의 히스토리를 그대로 유지합니다.

- 장점:
  - 비파괴적: 기존 커밋을 변경하지 않습니다.
  - 브랜치의 컨텍스트를 보존합니다.

- 단점:
  - 프로젝트 히스토리가 복잡해질 수 있습니다.

2. Rebase:

- 작동 방식:
  - 한 브랜치의 커밋들을 다른 브랜치의 끝에 "재배치"합니다.
  - 커밋 히스토리를 선형적으로 만듭니다.

- 장점:
  - 깔끔하고 선형적인 프로젝트 히스토리를 만듭니다.
  - 불필요한 병합 커밋을 피할 수 있습니다.

- 단점:
  - 기존 커밋의 해시값이 변경되어 히스토리가 재작성됩니다.
  - 공유 브랜치에서 사용 시 문제가 발생할 수 있습니다.

주요 차이점:

1. 히스토리 보존:
   - Merge: 모든 브랜치 히스토리를 보존합니다.
   - Rebase: 브랜치 히스토리를 재작성합니다.

2. 커밋 구조:
   - Merge: 병합 커밋을 생성하여 두 브랜치를 연결합니다.
   - Rebase: 커밋을 선형적으로 재배열합니다.

3. 사용 상황:
   - Merge: 공개 브랜치나 여러 사람이 작업하는 브랜치에 적합합니다.
   - Rebase: 개인 브랜치나 로컬에서 작업할 때 유용합니다.

4. 충돌 해결:
   - Merge: 병합 시점에 한 번에 충돌을 해결합니다.
   - Rebase: 각 커밋마다 충돌을 해결해야 할 수 있습니다.

선택 기준:
- 협업 상황, 프로젝트의 복잡도, 팀의 워크플로우 등을 고려하여 선택합니다.
- 보통 공개 브랜치에는 merge를, 개인 작업 브랜치에는 rebase를 사용하는 것이 일반적입니다.