여러 개발자가 하나의 저장소에 작업을 할 때, 협업을 좀 더 효과적으로 하기 위해 branch에 대한 규칙을 정하고 저장소를 잘 활용하기 위한 workflow를 정의하는 것을 바로 git branch 전략이라고 함
소프트웨어 개발 팀에서는 프로젝트의 특성에 따라 적절한 브랜치 배포 전략을 채택하는 것이 중요함

main(master): 이 브랜치는 항상 안정된 제품 버전을 관리함develop: 다음 출시 버전을 위한 모든 개발이 진행되는 브랜치feature 브랜치에서 개발한 후, 완료되면 이곳에 병합함develop 브랜치는 새로운 기능을 통합하여 전체적으로 테스트하고, 출시 준비를 완료하는 역할을 함feature: 새로운 기능 개발을 위해 생성되는 브랜치develop 브랜치에 병합됨feature 브랜치를 사용함으로써 작업의 독립성과 코드 안정성을 확보할 수 있음release: 출시 준비를 위한 마무리 작업이 진행되는 브랜치develop 브랜치에서 출시할 기능이 모두 완료되면, release 브랜치로 병합되어 최종 테스트 및 버그 수정 작업이 이루어짐main 브랜치에 병합하고 배포가 이루어지며, develop 브랜치에도 병합하여 다음 개발 주기를 준비함hotfix: 긴급하게 출시된 제품의 버그를 수정하기 위한 브랜치main 및 develop 브랜치에 병합하여 빠르게 안정화 작업을 진행함
main(master)feature: main에 기능을 추가하기 위한 브랜치브랜치 수: Git Flow는 다양한 종류의 브랜치를 사용하는 반면, GitHub Flow는 단일 브랜치 (master) 를 사용함
배포 방식: Git Flow는 release 와 hotfix 브랜치를 통해 명확한 배포 절차를 갖추고 있음
반면에, GitHub Flow는 단순하며 지속적인 배포를 강조하며, master 브랜치에서 배포를 수행함
복잡성: Git Flow는 복잡한 프로젝트나 대규모 팀에서 사용하기 좋음
그러나 이는 작은 팀이나 개인 프로젝트에 적용하기에는 많은 브랜치와 과정이 불필요하고 부담스러울 수 있음, GitHub Flow 는 단순하며 빠른 개발 및 배포를 위해 사용.
각각의 전략은 장, 단점이 존재하기에 프로젝트의 규모, 요구 사항 및 팀의 작업 방식에 맞추어 적절하게 채택하는 것이 좋음
Git Flow는 더 많은 제어와 복잡성을 가지고 있어 특정 기능이나 수정을 빠르게 배포해야 할 경우 유연성이 다소 떨어짐
그러나 그만큼 배포 안정성과 버전 관리 및 롤백 등 체계적인 운영이 가능함
GitHub Flow 는 테스트와 검증 절차를 거치지 않고 바로 master 브랜치로 Merge 되므로 위험성을 가지고 있음
하지만 그만큼 단순하고 빠르게 기능을 테스트하고 Agile 하게 배포할 수 있기 때문에, 주로 각 환경의 구분이 명확하지 않고 작은 규모의 프로젝트에 적합한 전략임