여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이다.
독립적으로 어떤 작업을 진행하기 위한 개념
브랜치를 나누지 않으면, 여러 사람이 commit할 경우 충돌이 일어날 확률이 높다. 또한, 서로 작업한 commit 내역을 내 로컬 repo에 계속 반영해야 한다!
현재 branch에서 다른 branch를 합칠 때 사용한다.
각각의 branch에 남은 commit을 히스토리에 그대로 남긴다.
commit 이력을 모두 남겨야 할 때 사용한다.
git merge {머지할 브랜치}
개발용 branch에 있던 내용을 하나로 합쳐서 중앙 branch에 하나의 commit으로 저장하는 전략
기존 변경사항들의 상세내용보다, merge 자체에 목적을 두고 사용한다.
다만, 개발용 branch에서 어떤 코드를 언제 바꿨는지에 대해 헷갈릴 수 있으므로 주의!
git merge --squash
Rebase라는 기능을 이용한다.
히스토리의 Base를 직접 옮겨서 처리하는 방식이므로, 개발용 branch에서 변경한 내용을 중앙 branch에서 변경한 것처럼 바꿔버릴 수 있다!
Merge commit이 없으므로, 어느 시점에 Merge가 되었는지 나중에 판단하기 어렵다.
git merge -ff
특정 기능 개발 후 develop branch에 머지하려고 하면, Squash and Merge가 유용하다.
develop branch를 production branch로 merge하고자 할 때는 develop branch에 분기가 남아있다면, production branch는 간결하게 유지하고자 Rebase and Merge가 유용하다.