IT, 개발/Git

Git Merge

  • -
반응형

Merge

Github에서 Pull request(PR)를 만들면 Merge 종류가 다양하게 있다. 기본적인 merge(Create a merge commit), Squash and merge과 Rebase and merge를 알아보자.

 

Create a merge commit(기본 merge)

  • 하나의 브랜치와 다른 브랜치 변경 이력 전체를 합치는 기존 방법이다. a,b,c 병합시 Merge commit(m)이 Master 브랜치에 새로 추가된다. Merge 옵션 설정을 안하면 진행되는 방식으로 보통 Merge branch 'develop' of ... 라는 commit 내역을 볼 수 있다.

단점으로는 merge가 많으면 히스토리 그래프 가독성이 떨어진다. Merge branch 'develop' of ... commit 굳이 master Branch에서 필요하지 않을 수 가 있기 때문에 여러 명의 개발자가 merge하면 master 브랜치 히스토리 추적하기가 쉽지 않다.

Squash and merge

  • Squash는 으깨다, 짓누르다라는 의미로 feature 브랜치의 a, b, c의 commit 내역을 합쳐 하나의 commit으로 만들 수 있다. 이렇게 하면 feature 브랜치의 commit history를 깔끔하게 만들 수 있기 때문이다. 단점으로는 commit 내역을 합치다보니 어떤 상황에서 어떤 코드를 변경했는지 알기 어려울 수 있다.

Rebase and merge

  • Squash and merge과 달리 commit 내역들이 개별적으로 master 브랜치에 추가 된다. Create a merge commit(기본 merge)는 브랜치 병합 시 Merge commit 기록이 남지만 Rebase and merge는 하나의 브랜치에서 작업한 것처럼 보여진다. 단점으로는 feature Branch가 어느 시점에 Master Branch로 merge되는지 알기 어려울 수 있다. 그래서 태그를 달아줘서 구분하기 좋게 하자.

참조 문서 및 사이트

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.