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)을 제출하기 전에 깔끔한 히스토리를 유지.
- 긴 이력으로 인한 혼란을 줄이고 싶을 때.
- 주의 사항
- Rebase는 공유된 브랜치에서 하지 말 것
- 다른 사람이 작업 중인 커밋이 변경되면 협업에 문제가 생김.
- 충돌 처리
- Rebase와 Merge 모두 충돌이 발생할 수 있음.
- Rebase 충돌 해결: git rebase --continue
- Merge 충돌 해결: 충돌 수정 후 git commit.
'git' 카테고리의 다른 글
| [Git] issue 템플릿 추가하기 (0) | 2025.01.10 |
|---|