머지는 분기된 이력을 병합하는 방법으로 하나의 브랜치 변경 이력을 다른 브랜치에 병합한다.
다음은 병합의 일반적인 절차를 설명한다.
Step 1) 병합될 브랜치로 전환
본 예는 Feature → mastre 병합을 고려한다.
git checkout master
Step 2) origin 동기화
git pull origin
Step 3) 머지
머지 명령를 이용해 Feature 브랜치를 master 브랜치로 병합한다. --no-ff 옵션은 머지 커밋을 생성하고 싶은 경우 지정한다.
git merge [--no-ff] Feature
Setp 4) Feature branch 삭제
git branch -d Feature
Fast-Forward Merge
아래 그림과 같이 머지 대상 (master)에 변경 이력이 없는 상태에서 Feature의 변경 이력을 병합하는 경우를 의미한다.
3-way Merge
머지 대상 (본 예의 경우 master)에 변경 이력이 존재하는 상태에서 Feature의 변경 이력을 병합하는 경우를 의미한다.
Merge Conflict
3-way merge의 경우 동일한 파일에 같은 지점이 변경된 경우 병합 대상 (본 예의 경우 Feature 브랜치)와 master를 병합할 때 충돌이 발생할 수 있다.
이 때 git은 고유한 방법으로 해당 파일 위치에 출동을 표시한다.
$ cat merge.txt
<<<<<<< HEAD
this is some content to mess with (현재 브랜치 변경 내용)
content to append
=======
totally different content to merge later
>>>>>>> new_branch_to_merge_later