[Git] Merge vs Squash Merge vs Rebase Merge

원알렉스·2020년 7월 3일
0

Git

목록 보기
1/1
post-thumbnail

1) Merge

  • 하나의 브랜치와 다른 브랜치의 변경 이력 전체를 합치는 방법입니다.
  • commit a, b, c를 참조하는 m이 생성되고 m을 통해 a + b + c가 master 브랜치에 추가됩니다.
  • m은 두개의 parent를 가집니다.
$ git checkout master
$ git merge my-branch

2) Squash and Merge

  • commit a + b + c를 합쳐서 새로우 commit abc를 생성하고 master 브랜치에 추가합니다.
  • abc는 1개의 parent를 가집니다.
  • feature 브랜치의 commit history를 합쳐서 깔끔하게 만들기 위해 사용됩니다.
$ git checkout master
$ git merge --squash my-branch
$ git commit -m "your-commit-message"

3) Rebase and Merge

  • 모든 commit들이 합쳐지지 않고 각각 개별적으로 master 브랜치에 추가됩니다.
  • 각 commit은 모두 하나의 parent를 가집니다.
  • Merge는 Merge commit 기록이 추가로 남게 되지만 Rebase의 경우에는 브랜치 병합 시 Merge commit 기록이 남지 않습니다. 따라서 하나의 브랜치에서 작업한 것처럼 보여집니다.
$ git checkout my-branch
$ git rebase master
$ git checkout master
$ git merge my-branch

References

profile
Alex's Develog 🤔

0개의 댓글