대표적인 merge의 종류인 fast-forward
와 3-way merge
에 대해서 살펴보자
1. fast-forward merge

그림에서 보이는 바와 같이 merge하려고 하는 두 branch(main, likelion)은 동일 선상에 위치하고 있다.이 때 두 브랜치는 fast-forward 상태에 있다고 한다.
# main branch에 위치한 상태에서
# merg의 옵션을 붙이지 않는다면 기본적으로 fast-forward
git merge likelion
git merge --ff likelion

코드를 실행하고 나면 그림과 같이 main branch가
앞서있는 likelion 브랜치로 병합
된다. 마치 빨리감기를 한 것 처럼 보여서 fast-forward라 불린다.fast-forward merge는 커밋을 생성하지 않는다!!
2. 3-way merge

위 그림에서 main, likelion 두 브랜치 모두 base에서 분기해 나간 상태가 되었다. 두 브랜치 중 어느 것도 base에 위치하지 않는다.
# main branch에 위치한 상태에서
# 3-way merge method (non-fasst-for)
git merge --no-ff likelion

3-way라고 불리는 이유는 base / main/ likelion 이 세 개의 항목들을 참조하여 merge를 하기 때문이다.
3-way merge는 base와 각 브랜치가 참조하는 commit을 고려하여 자동 병합을 진행한다. 이 때, merge conflict가 발생할 수 있는데 이 충돌은 수동으로 해결해줘야 한다.
되도록이면 commit을 할 수 있는 3-way merge를 이용할 것!!
Share article