[Git] Merge 종류

June·2021년 11월 12일
1

[Git] 

목록 보기
8/12
post-thumbnail

출처: https://im-developer.tistory.com/182

다양한 Merge

GitHub은 아래 3가지의 Merge Button이 가능해요.

  • Merge Commit
  • Squash Merging
  • Rebase Merging

저장소에 맞게 허용 가능한 병합 방법을 Settings > Merge button에서 설정해주세요. 프론트엔드에서는 커밋 히스토리를 간소화하고 쉽게 cherry-pick과 revert를 할 수 있도록 Squash Merging만 허용하고 있어요.

$ git checkout -b my-branch

Merge

하나의 브랜치와 다른 브랜치의 변경 이력 전체를 합치는 방법이다.

commit a, b, c를 refer하는 m이 생성되고 m을 통해 a + b + c가 master에 추가된다.

m은 2개의 parent를 가진다.

$ git checkout master
$ git merge my-branch

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"

Rebase and Merge

모든 commit들이 합쳐지지 않고 각각 master 브랜치에 추가된다.

각 commit은 모두 하나의 parent를 가진다.

$ git checkout my-branch
$ git rebase master
$ git checkout master
$ git merge my-branch

Merge는 Merge commit 기록이 추가로 남게 되지만 Rebase의 경우에는 branch 병합 시 Merge commit 기록이 남지 않는다. 따라서 마치 하나의 브랜치에서 작업한 것처럼 보여진다.

0개의 댓글