
두 브랜치의 공통 조상을 기준으로 각 브랜치의 변경 사항을 비교하여 새로운 병합 커밋을 생성하는 방식
한 쪽 브랜치에만 이후 커밋이 있을 경우 둘을 병합할 때 새로운 커밋 없이 브랜치 HEAD를 최신 커밋으로 이동시키는 방식
단점 : 작업 후 어떤 브랜치를 사용했고 언제 병합했는지 기록이 남지 않음
원래 브랜치에 변화가 없어도 Fastforwad하지 않고 3-way-merge 하려면
Git merge --no-ff (병합할 브랜치명)
cherry-pick 명령어 사용 - 원하는 브랜치만 복사하여 붙여넣는 형식
git cherry-pick (가져올 커밋의 해시)

main에서 분기된 브랜치에서 분기된 브랜치를 main으로 옮기기
1. git rebase --onto (도착 브랜치) (출발 브랜치) (이동할 브랜치)
ex) git rebase --onto main branch1 branch2
2. git switch main
3. git merge (붙여 놓은 브랜치)
(도착브랜치)로 (출발브랜치)의 (이동브랜치)를 옮겨 붙이겠다.

git merge --squash (대상 브랜치)
git commit -m "커밋 메시지"
| 브랜치 | 용도 |
|---|---|
| main | 제품 출시/배포 |
| develop | 다음 출시/배포를 위한 개발 진행 |
| release | 출시/배포를 위한 개발 진행 |
| feature | 기능 개발 |
| hotfix | 긴급한 버그 수정 |