2024. 1. 14. 23:36ㆍ개발/프론트엔드 개념
branch merge란?
merge란 현재 위치한 branch에서 다른 branch를 병합할 때 사용한다.
특정 branch로 합치는 요청을 보내는 Pull Request(pr)을 보낼 때 Create a merge commit, Squash and merge, Rebase and merge 이 3가지 merge 방법이 존재한다. 이 방법들을 설명하기 위해서는 commit(커밋) 메세지와 commit 그래프를 어떻게 유지해야 할지 와 연관 있기 때문에 merge 방법의 특징을 설명하겠다.
Merge
일반적으로 많이 사용하는 merge 방법으로 커밋 이력을 모두 남길 때 사용한다. 모든 커밋과 분기했던 branch의 이력이 남는 것이 장점이자 단점이다.
Fast-forward 설정이란?
git merge의 기본 설정인 -ff옵션(fast-forward)은 Base 브랜치가 이후 변경 내용이 없는 최신 브랜치일 경우 병합한다는 커밋 없이 합치고, 그렇지 않을 경우 병합 커밋을 남기고 합친다.Github의 Merge pull request는 git merge --no-ff 옵션으로 Base 브랜치가 최신 브랜치라 할지라도 커밋을 남기도록 강제한다.
Squash & Merge
git merge에 -squash 옵션을 추가하는 방법으로 분기했던 branch에 있던 커밋 모두를 합쳐 하나의 커밋으로 만든다. 이는 지저분할 수 있는 커밋 히스토리들을 하나로 합쳐서 기능상 의미 있는 하나의 커밋만 남길 때 사용한다. 하지만 과도한 생략을 하게 된다면, 정확한 변경 파악이 힘들 수 있다. 특정 기능 개발 후 develop branch에 merge 하고자 할 때는 Squash and Merge가 유용할 수 있다.
Rebase & Merge
분기했던 branch의 기준을 Base로 설정하고, merge하는 방법으로 결과적으로는 git merge -ff와 같은 형태가 된다. rebase를 하면 커밋들의 Base가 변경돼 커밋 해시 또한 변경될 수 있다. 이런 경우 git pysh -f (force push)해야 할 경우도 있다. merge commit을 남길 필요가 없는 merge의 경우에 사용하면 좋다. 또한 커밋 그래프가 하나로 rebase 되기 때문에 가독성이 좋다. develop branch를 production branch로 merge 하고자 할 때는 develop branch에 분기가 남아있다면, production branch는 간결하게 유지하고자 Rebase and Merge가 유용할 수 있다.
참고 자료
'개발 > 프론트엔드 개념' 카테고리의 다른 글
[JS] 이벤트 버블링, 캡쳐링, 위임 (0) | 2024.01.28 |
---|---|
[Git] Git Flow 브랜치 전략 (0) | 2024.01.15 |
[CSS] position의 속성과 특징(static, relative, absolute, fixed, sticky) (1) | 2024.01.07 |
[HTML] 시맨틱 태그를 사용하면 좋은 점 (1) | 2024.01.07 |
[CSS] Cascading (0) | 2023.12.31 |