[1] Merge
-> 두 branch의 히스토리를 유지하면서 합치는 방법. 이 작업을 수행하면, 두 branch의 모든 변경사항을 포함 하여 새로운 'commit'을 생성한다.
주로 branch의 히스토리를 그래도 유지 하고자 할 때 유용
[2] Rebase
-> 하나의 branch를 다른 branch의 최신 커밋 위에 're-apply' 하는 방법.
과장에서 branch의 히스토리가 선형적으로 정리 됩니다.
[3] Squash
-> 여러개의 커밋을 하나의 커밋으로 합치는 과정, 특히 pull request를 처리 할 때 유용
'squash' 를 사용 하면, feature branch의 모습 변경 사항이 단일 커밋으로 master 또는
main branch에 병합 된다.
-> git flow는 Vincent Driessen이 제안한 Git을 사용하는 프로젝트 에서의 브랜치 관리 전략, 여러 종류의 브랜치를 활용하여 개발 프로세스를 체계적으로 관리
1) master/main : 프로덕션 준비 상태의 코드 유지.
2) develop : 다음 출시 버전을 위한 개발 작업이 이루어지는 브랜치, 기능 개발이 완료 되면
이 브랜치로 merge된다.
1) feature branches : 새로운 기능 개발이나 버그 수정과 같은 작업을 위해 생성, 각 기능 수정 사항을 개발하는 독립된 공간을 제공.
2) release branches : 다가오는 출시를 준비하는 브랜치, 'develop' 브랜치에서 분기되어, 출시전 마지막 버그 수정이나 무서 작업 등이 이루어지는 곳
(준비가 완료 되면 , 'master/main'과 'develop' 양쪽에 merge
3) hotfix branches : 프로덕션에서 발견된 긴급한 버그를 수정하기 위해 'master/main'에서 분기되어 생성. 수정이 완료되면 'master/main'과 'develop'브랜치 양 쪽에 merge 된다.