깃허브에서 merge와 rebase의 차이
1. Merge:
- 작동 방식:
- 두 브랜치의 마지막 커밋을 가져와 새로운 "병합 커밋"을 생성합니다.
- 원본 브랜치의 히스토리를 그대로 유지합니다.
- 장점:
- 비파괴적: 기존 커밋을 변경하지 않습니다.
- 브랜치의 컨텍스트를 보존합니다.
- 단점:
- 프로젝트 히스토리가 복잡해질 수 있습니다.
2. Rebase:
- 작동 방식:
- 한 브랜치의 커밋들을 다른 브랜치의 끝에 "재배치"합니다.
- 커밋 히스토리를 선형적으로 만듭니다.
- 장점:
- 깔끔하고 선형적인 프로젝트 히스토리를 만듭니다.
- 불필요한 병합 커밋을 피할 수 있습니다.
- 단점:
- 기존 커밋의 해시값이 변경되어 히스토리가 재작성됩니다.
- 공유 브랜치에서 사용 시 문제가 발생할 수 있습니다.
주요 차이점:
1. 히스토리 보존:
- Merge: 모든 브랜치 히스토리를 보존합니다.
- Rebase: 브랜치 히스토리를 재작성합니다.
2. 커밋 구조:
- Merge: 병합 커밋을 생성하여 두 브랜치를 연결합니다.
- Rebase: 커밋을 선형적으로 재배열합니다.
3. 사용 상황:
- Merge: 공개 브랜치나 여러 사람이 작업하는 브랜치에 적합합니다.
- Rebase: 개인 브랜치나 로컬에서 작업할 때 유용합니다.
4. 충돌 해결:
- Merge: 병합 시점에 한 번에 충돌을 해결합니다.
- Rebase: 각 커밋마다 충돌을 해결해야 할 수 있습니다.
선택 기준:
- 협업 상황, 프로젝트의 복잡도, 팀의 워크플로우 등을 고려하여 선택합니다.
- 보통 공개 브랜치에는 merge를, 개인 작업 브랜치에는 rebase를 사용하는 것이 일반적입니다.