1. Merge

  • 작업한 브랜치를 메인 브랜치로 병합시키는 방법
$ git checkout master
$ git merge develop

(1) Fast-Forward

image

  • base에 변경이 생기지 않았을 때 실행
  • develop로 분기 이후 master에 새로운 커밋이 생기지 않고 최신 상태를 유지하고 있다면 병합시 develop의 커밋을 그대로 다 가져올 수 있다

(2) Recursive

image

  • base에 변경이 일어 났을 때 실행
  • develop로 분기 이후 master에 새로운 커밋이 생긴다면 develop 병합시 master의 변경된 내용과 합쳐서 병합이 이루어 져야 한다
  • merge 커밋 메시지를 작성

2. Squash & Merge

image

  • 여러 개의 commit을 하나로 합쳐서 병합시키는 방법
  • develop의 여러 commit을 합친 새로운 commit을 만들어 master에 추가된다
$ git checkout master
$ git merge --sqaush develop
$ git commit -m "squah & merge"

3. Rebase & Merge

image

  • 메인 브랜치로 base를 변경해 병합시키는 방법
  • develop의 base를 master로 변경해 develop의 커밋을 master의 최신 커밋 뒤로 추가한다
  • rebase 후에 merge하는 과정이 필요하다
$ git checkout develop
$ git rebese master        # REBASE
$ git checkout master
$ git merge develop
  • feature 브랜치에서 dev 브랜치 rebase 후 force push
$ git checkout feat/abc-123
$ git rebase origin/dev
... Resolve Conflict
$ git push -f

<출처>
https://hudi.blog/git-merge-squash-rebase/