Git에서 브랜치를 병합하는 대표적인 전략에는 Merge
, Rebase Merge
, Squash Merge
3가지가 있다.
Git에서 변경 사항이 생기면 Commit을 하게 되고, 이 때 커밋 히스토리가 발생하는데 효율적인 히스토리 관리를 위해서는 각 전략을 적절히 선택하는 것이 중요하다!
가장 기본적인 Merge로 하나의 브랜치와 다른 브랜치의 변경 이력을 합치는 방식이다.
git checkout main
git merge feature
위 그림과 같이 feature 브랜치에서 작업한 변경 사항 X,Y,Z를 main 브랜치로 병합 시 새로운 merge 커밋을 M을 만들며 두 브랜치가 합쳐진다.
하나의 브랜치의 base를 다른 브랜치의 최신 Commit으로 base로 옮겨서 Merge하는 방식이다.
git checkout feature
git rebase main //feature브랜치의 base가 main 브랜치의 최신 커밋으로 변경
git checkout main
git merge feature
기존 방식대로 feature 브랜치를 main 브랜치에 merge하면 분기점 A를 base로 하여 두 브랜치를 비교하게 된다.
Rebase Merge
를 하게 될 경우 feature브랜치의 base를 A->C로 옮기고 Feature 브랜치에서 생성한 각각의 커밋 X,Y,Z를 main 브랜치의 C 지점 이후에 재정렬하게 된다.
여러 커밋을 하나의 커밋으로 합친 후 Merge하는 방식이다.
git checkout main
git merge --squash feature
git commit -m "squash merge"
Feature 브랜치에서 생성한 각각의 커밋 X,Y,Z를 합친 하나의 커밋 X'Y'Z'커밋을 생성한 후 main 브랜치에 병합한다.
Merge | 하나의 브랜치와 다른 브랜치의 변경 이력을 Merge
Rebase Merge | 하나의 브랜치의 base를 다른 브랜치의 최신 Commit으로 base로 옮겨서 Merge
Squash Merge | 여러 커밋을 하나의 커밋으로 합친 후 Merge