본문 바로가기
Git/Merge

Merge / Squash Merge / Rebase Merge

by BAYABA 2021. 10. 25.
  1. 개인 공부 목적으로 작성한 글입니다.
  2. 아래 출처를 참고하여 작성하였습니다.
  • 더 자세한 내용은 아래 출처에 잘 나와있습니다.

목차

  1. Merge
  2. Squash Merge
  3. Rebase Merge

1. Merge

$ git checkout master

$ git merge my-branch


  1. 하나의 브랜치와 다른 브랜치의 변경 이력 전체를 합치는 방법입니다.
  • commit a,b,c를 참조하는 m이 생성되고, m을 통해 a + b + c가 master에 추가됩니다.
  • m 커밋은 2개의 parent를 가집니다.
  1. 이력은 아래와 같이 남습니다.


2. Squash Merge

$ git checkout master

$ git merge --squash my-branch

$ git commit -m "your-commit-message"


  1. commit a, b, c를 합쳐서 새로운 commit abc가 만들어지고 master에 추가됩니다.
  2. abc는 1개의 parent를 가집니다.
  • feature 브랜치의 commit history를 합쳐서 깔끔하게 만들기 위해 사용합니다.
  1. 이력은 아래와 같이 남습니다.
  • my-branch의 여러 개의 commit history가 하나로 합쳐져서 새로운 commit을 생성합니다.


3. Rebase Merge

$ git checkout my-branch

$ git rebase master

$ git checkout master

$ git merge my-branch


  1. 모든 commit들이 합쳐지지 않고 각 각 master 브랜치에 추가됩니다.
  2. 각 commit은 모두 하나의 parent를 가집니다.
  • Merge는 Merge commit 기록이 추가로 남게 되지만 Rebase의 경우에는 branch 병합 시 Merge commit 기록이 남지 않습니다.
  • 따라서 마치 하나의 브랜치에서 작업한 것처럼 보여집니다.
  1. 이력은 아래와 같이 남습니다.


출처

  1. [Git] Merge 이해하기 (Merge / Squash and Merge / Rebase and Merge)

'Git > Merge' 카테고리의 다른 글

Local Merge (로컬에 있는 두 브랜치 머지하기)  (0) 2021.10.06