Git에서 branch merge의 방법은 2가지가 있습니다. 다른 명령어와 함께 쓰는 방법은 추가로 3개지가 더 있습니다.
아래 블로그들을 참고하여 정리한 내용입니다.
https://velog.io/@devp1023/GIT-병합-충돌-해결-3-way-merge-fast-forward
https://lukemerrett.com/different-merge-types-in-git/
https://velog.io/@msung99/Git-Squash-Merge
두 브랜치가, 커밋 히스토리 상에서 분리된 2개의 선에 각각 존재할 때 머지를 하면 머지 커밋이 새롭게 생기는 Merge입니다.
3가지의 commit을 고려하기 때문에 3-way입니다.
branch간의 병합을 진행할 때, 커밋이 생기지 않고 merge 명령어를 실행하는 브랜치의 HEAD Commit이 병합되는 branch의 HEAD Commit으로 이동되는 방식입니다.
조건 : commit history에서 같은 line 상에 있는 branch를 merge할 때 이루어집니다.
이점:
단점:
여러번 커밋한 이력을 하나의 커밋 이력으로 합친후 Merge 하는데 사용합니다. branch간의 병합을 진행할 때, 커밋이 생기지 않습니다.
git merge --squash sub_bransh
git commit -m "메시지"
통합커밋 하나를 생성하는 것이 아닌, 서브 브랜치의 커밋 히스토리를 몽땅 다 가져와서 develop 브랜치에다 merge 하는 방식입니다.
git checkout sub_branch
git rebase develop # rebase
git checkout develop
git merge sub_branch # merge
쉽게말해 Squash 는 통합커밋 딱 하나를 master 브랜치 뒤에 붙여주는 방식이고, Rebase 는 서브브랜치의 여러 커밋들을 뒤에 붙여주는 방식입니다.