현재 branch에서 다른 branch를 합칠 때 사용된다
특정 branch로 합치게 해달라고 요청하는 pull request로 세 가지 방식 중 하나를 선택할 수 있다.
각각 방식마다 커밋 메세지, 커밋 그래프를 어떻게 유지해야 할 지와 연관되어 있기 때문에 이렇게 나누어 관리한다.
일반적으로 많이 사용하는 merge방법이며 커밋 이력을 모두 남길 때 사용된다. 장점이자 단점은 모든 커밋과 분기했던 branch 히스토리가 남는다는 것.
git merge는 -ff 옵션이 기본으로 설정되어 있는데, 이는 base브랜치가 이후 변경 내용이 없는 최신 브랜치일 경우 병합한다는 커밋 없이 합치고, 그렇지 않은 경우 병합 커밋을 남기고 합한다.
github의 merge and pull request 는 git merge -—no-ff 옵션으로 base 브랜치가 최신 브랜치라 할지라도 커밋을 남기도록 강제한다.
git merge에-squash옵션을 추가한 방법이다. 분기했던 branch에 있던 내용 a, b, c커밋을 모두 합쳐 하나의 새로운 커밋을 만든다.
지저분한 커밋 히스토리들을 하나로 합쳐서 기능상 의미있는 하나의 커맛만 남길 때 사용한다. 잘못 사용해 과도한 생략을 하게 되면, 추후 변경 파악이 힘들 수 있다.
분기했던 branch의 기준을 최신 base로 정하고, merge하는 방법이다. 결과적으로는
git merge -ff과 같은 상황이 된다
rebase하면 커밋들의 base가 변경되어 커밋해서 또한 변경될 수 있다. 이런 경우 git push -f해야 할 수 있다. 머지 커밋을 남길 필요가 없는 merge에 하면 좋다. 커밋 그래프가 하나의 라인으로 그려져 가독성이 뛰어나다.
브랜치를 나누는 방법에 대한 분류 중 하나이다. Git flow의 특징은 브랜치를 5종류로 나눈다.
feature/branch-name 과 같은 형태로 생성한다.release/v1.1 과 같은 형태로 생성한다.hotfix/v1.0.1 과 같은 형태로 생성한다.main, develop은 필수 브랜치이지만 나머지 브랜치는 유지 보수를 목적으로 하는 선택적 브랜치이다. 본인 프로젝트와 스타일에 따라 커스터마이징하여 브랜치 이용 가능하다.