main branch 에서 바로 각자 branch를 파는게아니라 중간에 작업용으로 develop branch 를 판후 거기서 작업을함 (develop branch 가 사실상 main branch 느낌)
develop branch 에서 main branch 로 바로 release 하는게 아니라
배포전 검증 후 release 하기 위해 release branch 를 파서 진행
만약에 배포후 에러가 생기면 메인에서 직접 hotfix branch를 파서
거기서 수정 후 바로 main에 병합
main : 서비스 배포를 할 때 실질적으로 사용하는 branch
develop : main branch 는 배포를 할 때 사용하기 때문에 개발자들이 main branch에 바로 합치지 않기 위해 개발용으로 만든 branch
feature : 실제로 개발자가 코드를 작성하는 branch
release : 마지막으로 배포전 검증을 위해 만들어진 branch
hotfix : 배포 후 서비스를 제공하고 있을 때 문제가 발생하면 최대한 빨리 수정하기 위해 만들어진 branch
rebase :
불필요한 merge commit 제거
같은 작업을 진행한 commit 끼리 모으기(history관리가 용이)
merge :
모든 feature branch 마다 merge commit 이 남음.
만약 main 브랜치를 공유하는 개발자가 많고, 프로젝트의 규모가 크다면, branch history가 지저분해짐
복잡한 프로젝트 history
독립된 브랜치에서 로직 하나를 작성하고 수정하더라도, 다른 작업과 그 내역이 겹쳐 구분하기가 힘듬
commit 을 하나로 합쳐주는 기능