Merge 는 git branch 를 다른 branch로 합치는 과정입니다.
서로 다른 branch에서 작업을 했거나 작업 내용을 합쳐야 하는 경우에 merge를 합니다.
git에서 branch merge에는 3가지 방법이 있습니다.
1. Merge commit
-두 브랜치의 변경 사항을 모두 유지하면서 병합합니다. 이 방식은 각 브랜치의 변경 사항이 과거의 커밋으로 보존되고 새로운 커밋이 추가되어 최종 병합을 합니다.
Merget commit 장점
- 브랜치의 히스토리를 모두 유지하면서 변경사항을 병합합니다.
- 모든 커밋들의 커밋 아이디가 바뀌는 경우가 없다.
Merget commit 단점
- 브랜치의 히스토리를 유지하면서 병합하기 때문에 커밋 히스토리가 복잡해집니다.
다양한 브랜치에서 여러 작업이 이루어지면 커밋 로그가 복잡해지는데 팀이 커지면 커질수록 복잡성은 빠르게 증가합니다.
2. Squash Merge
- 브랜치에서의 모든 변경 사항을 하나의 커밋으로 압축해서 병합하는 방식입니다.
-각각의 커밋에서 발생한 모든 변경 사항을 병합 후에 하나의 새로운 커밋을 생성합니다.
Squash Merge 장점
- 커밋의 히스토리를 간단하게 유지할 수 있습니다. 각 커밋이 특정 pull Request를 대변하고 의미를 이해하기 쉽게 되서 커밋 하나하나가 완성된 기능을 의미하게 됩니다.
- pr 에서 발생한 자잘한 문제들을 숨기고 가장 중요하고 필요했던 내용들만 압축하여 담게됩니다.
Squash Merge단점
- 작업의 상세한 이력을 잃게 됩니다. 각 커밋에 대한 개별적인 맥락이나 작업자의 정보 등이 포함되지 않아 나중에 문제가 생겼을때 해결하기 어려울 수 있습니다.
- 기존의 작업 커밋의 아이디들이 하나로 합쳐지며 사라지고 새로운 커밋 아이디가 생성되기 때문에 여러명이서 해당 브랜치를 기반으로 작업을 수행하고 있었다면 병합이 이뤄지는 경우 복잡한 문제가 생길 수 있습니다.
3.Rebase Merge
- 현재 브랜치를 target 브랜치에 rebase 시킨 후 병합하는방식입니다.
-target 브랜치의 커밋 위로 혀재 브랜치의 모든 커밋을 옮겨놓기 때문에 커밋 히스토리가 선형적으로 유지됩니다.
Rebase Merge장점
- 깨끗하고 선형적인 커밋 히스토리를 만들기 때문에 히스토리 파악 및 코드의 변화를 이해하기 쉽습니다.
Rebase Merge단점
- 커밋 아이디들이 바뀌게 되어 혼란이 생길 수 있습니다. 특히 브랜치가 크게 분기된 경우에 여러개발자가 동시에 작업을 수행하는 경우에는 rebase 방식이 복잡한 충돌을 일으킬 수 있습니다.
- 다른 기능으로 나뉘어있던 작업이력이 하나로 합쳐지기 때문에 특정 기능이 어디서부터 어디까지의 커밋으로 구현되어있는지 알기가 어렵습니다.
'weeklypaper' 카테고리의 다른 글
얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) (0) | 2023.12.12 |
---|---|
js 비교연산자 '==' 와 '===' 차이점은? (0) | 2023.12.12 |
git flow에 대해서 (0) | 2023.12.12 |
CSS - position 속성 (0) | 2023.12.12 |
CSS - Cascading (0) | 2023.12.12 |