현재 branch에서 다른 branch를 합칠 때 사용한다.
3가지의 종류가 있다.


git merge에는 -ff옵션이 기본으로 설정되어 있는데 이는 Base 브랜치가 이후 변경 내용이 없는 최신 브랜치일 경우 병합한다는 커밋없이 합치고 그렇지 않을 경우 병합 커밋을 남기고 합친다.
Github의 Merge pull request는 git merge -—no-ff 옵션으로 Base 브랜치가 최신 브랜치라 할지라도 커밋을 남기도록 강제 한다.

git merge에 -squash옵션을 추가한 방법이다.
git merge -ff와 같은 형태가 된다.git push -f(force push)를 해야할 경우도 있다.branch 전략에 따라 달라질 수 있다.
- 특정 기능 개발 후 develop branch에 merge하고자 할 때는 Squash and Merge가 유용할 수 있다.
- develop branch를 production branch로 merge하고자 할 때는 develop branch에 분기가 남아있다면, production branch는 간결하게 유지하고자 Rebase and Merge가 유용할 수 있다.