브랜치를 병합하는 방법은 두 가지가 있다.
1. Fast-forward
2. 3-way Merge
둘의 차이를 알아보기 위해 아래 예시를 보자.
아래 예시에서 병합은 모두 master에서 진행한다.
다음과 같은 예시를 보자.
현재 master의 최신 커밋 상태는 ver3이다.
브랜치1
을 만들었다.브랜치1
은 계속 작업을 이어나간다.브랜치2
를 만들고 작업을 이어나갔다.브랜치2
의 작업이 끝나고 master와 병합했다. 병합은 master에서 진행하였다.브랜치2
의 조상 커밋이 ver3로 master가 가르키는 커밋이다. 이 경우 master는 브랜치2
가 가리키는 커밋으로 바꾸며 새로운 커밋을 생성하지 않는다. 이 경우를 Fast-forward 병합 방식이다.브랜치2
를 삭제하고 브랜치1
작업을 이어나간다. 이후 브랜치1
작업을 끝내고 master와 병합을 한다. 병합은 master에서 진행한다.브랜치1
의 조상 커밋과 master 커밋이 같지 않다. 이 경우 ①master와 브랜치1
의 공통 조상 커밋 ②master커밋 ③브랜치1
커밋 총 3개를 합병하여 새로운 커밋 커밋6
을 생성한다. 이를 3-way Merge 라고 한다.최종 모습이다.