본문 바로가기
weeklypaper

git에서 branch merge 3가지 방법

by 띠리에이터 2023. 12. 12.

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