[Week2] Git 브랜치 병합
2024년 10월 26일
Git 브랜치 병합(Merge)은 서로 다른 브랜치에서 작업한 내용을 하나로 통합하는 과정
병합의 개념
- 병합(Merge)은 두 개 이상의 커밋 히스토리를 하나로 합치는 것
- git merge는 현재 체크아웃된 브랜치에 다른 브랜치의 변경사항을 가져와서 반영
예시:main 브랜치에서 feature/login 브랜치를 병합하려면 아래처럼 동작
병합 방식
1. Fast-forward Merge (빠른 병합)
- 브랜치가 일직선으로 연결되는 경우, 새로운 커밋 없이 그냥 포인터만 앞으로 이동함
- 히스토리가 깔끔하지만, 병합 흔적이 남지 않음
git checkout main
git merge feature/login --ff-only
2. 3-way Merge (일반 병합)
- 공통 조상 커밋을 기준으로, 병합 커밋을 새로 생성
- 다양한 브랜치 히스토리를 유지하며 병합 흔적이 남음
git checkout main
git merge feature/login
병합 충돌(Merge Conflict)
충돌 발생 조건
- 두 브랜치에서 동일한 라인의 코드가 동시에 수정되었을 때 발생
해결 방법
- Git이 충돌 파일에 conflict 마커 삽입
<<<<<<< HEAD
main 브랜치의 코드
=======
feature 브랜치의 코드
>>>>>>> feature/login
- 수동으로 원하는 코드로 수정
- 수정한 파일을 git add로 스테이징
- git commit으로 병합 완료
병합 명령 요약
명령어 | 설명 |
git merge <branch> | 현재 브랜치에 다른 브랜치를 병합 |
git merge --no-ff <branch> | 병합 커밋을 반드시 남기도록 강제 |
git merge --abort | 충돌 시 병합 취소 |
git log --graph | 병합 히스토리 확인 |