- 개인 공부 목적으로 작성한 글입니다.
- 아래 출처를 참고하여 작성하였습니다.
- 더 자세한 내용은 아래 출처에 잘 나와있습니다.
목차
- Merge
- Squash Merge
- Rebase Merge
1. Merge
$ git checkout master
$ git merge my-branch
- 하나의 브랜치와 다른 브랜치의 변경 이력 전체를 합치는 방법입니다.
- commit a,b,c를 참조하는 m이 생성되고, m을 통해 a + b + c가 master에 추가됩니다.
- m 커밋은 2개의 parent를 가집니다.
- 이력은 아래와 같이 남습니다.
2. Squash Merge
$ git checkout master
$ git merge --squash my-branch
$ git commit -m "your-commit-message"
- commit a, b, c를 합쳐서 새로운 commit abc가 만들어지고 master에 추가됩니다.
- abc는 1개의 parent를 가집니다.
- feature 브랜치의 commit history를 합쳐서 깔끔하게 만들기 위해 사용합니다.
- 이력은 아래와 같이 남습니다.
- my-branch의 여러 개의 commit history가 하나로 합쳐져서 새로운 commit을 생성합니다.
3. Rebase Merge
$ git checkout my-branch
$ git rebase master
$ git checkout master
$ git merge my-branch
- 모든 commit들이 합쳐지지 않고 각 각 master 브랜치에 추가됩니다.
- 각 commit은 모두 하나의 parent를 가집니다.
- Merge는 Merge commit 기록이 추가로 남게 되지만 Rebase의 경우에는 branch 병합 시 Merge commit 기록이 남지 않습니다.
- 따라서 마치 하나의 브랜치에서 작업한 것처럼 보여집니다.
- 이력은 아래와 같이 남습니다.
출처
'Git > Merge' 카테고리의 다른 글
Local Merge (로컬에 있는 두 브랜치 머지하기) (0) | 2021.10.06 |
---|