반응형
Merge 종류
Github에서는 세 종류의 Merge Button이 있다. 그 종류는 아래와 같다.
- Merge Commit
All commits from this branch will be added to the base branch via a merge commit. - Squash and Merge
The (n) commits from this branch will be combined into one commit in the base branch. - Rebase and Merge
The (n) commits from this branch will be rebased and added to the base branch.
아래 명령을 통해 master branch에서 test-branch를 checkout 한 상황으로 가정해보자.
$ git checkout -b test-branch
Merge
하나의 브랜치와 다른 브랜치의 변경 이력 전체를 합치는 방법으로,
commit c1, c2, c3를 refer하는 m이 만들어지며, m을 통해 c1+c2+c3가 master에 추가되는 형태이다.
m은 2개의 parent를 가진다.
아래의 명령어를 통해 merge를 진행한다.
$ git checkout master
$ git merge test-branch
Squash and Merge
commit c1 + c2 + c3를 합쳐서 새로운 commit c1c2c3가 만들어지며 master에 추가되는 형태이다.
c1c2c3는 1개의 parent를 가진다.
feature 브랜치의 커밋 히스토리를 하나로 합쳐, 깔끔하게 만들기 위해 주로 사용한다.
$ git checkout master
$ git merge --squash test-branch
$ git commit -m 'commit message'
Rebase and Merge
모든 commit들이 합쳐지지 않고 각각 master 브랜치에 추가 된다.
각 commit은 모두 하나의 parent를 가진다.
Merge의 경우 Merge commit 기록이 추가로 남게 되지만, Rebase의 경우에는 branch를 병합할 때, Merge commit의 기록이 남지 않아, 하나의 브랜치에서 작업한 것처럼 보여지게 된다.
$ git checkout test-branch
$ git rebase master
$ git checkout master
$ git merge my-branch
마무리하며
각 상황에 맞는 merge는 commit histroy를 보다 직관적으로 파악할 수 있게 해주기 때문에 개념을 잘 잡고 진행한다면 도움이 될 것 같다. 물론 나만 잘하면 되는건 아니기 때문에 같이 협업하는 사람들간의 커뮤니케이션 역시 중요할 것이다.
반응형
'Development > Git' 카테고리의 다른 글
Gitmoji를 사용해보자! (0) | 2022.05.23 |
---|