Git flow
- main 브랜치에서 Develop이라는 브랜치라는 개발용 브랜치를 하나 만든다.
- 각 작업 사항 브랜치들은 이 Develop 브랜치에서 따온다.
- 각 작업이 끝난 브랜치는 Develop 브랜치로 머지를 시킨다
- 머지된 Develop브랜치에서 release 브랜치를 생성 한다
- release 브랜치에서는 QA를 하며 오류가 나는 사항들은 고친 후에 Develop에 머지시킨다
- 만약 더 이상의 오류가 없다고 하면 최종 main 브랜치에 머지를 시킨다.
- 혹시나 main brnach(프로덕션 서버)에서 오류가 발생된다면 메인 브렌치에서 HotFix 브랜치를 만든다
- HotFix 브랜치에서 오류가 성공적으로 해결이 된다면 main 브랜치에 머지 시키고 Develop 브랜치 각 기능 브랜치에 머지시킨다
이것이 기본적이 Git flow이다.
Git rebase
사용하는 이유
- merge 사용 시 불필요한 merge commit이 생성
- 모든 feature branch 마다 'merge commit'이 남는다. 만약 main 브랜치를 공유하는 개발자가 많고, 프로젝트의 규모가 크다면 branch history가 지저분해지기 쉽다
- 복잡한 프로젝트 history
- 독립된 브랜치에서 로직 하나를 작성하고 수정하더라도, 다른 작업과 그 내역이 겹쳐 구분하기 어려워진다. 이런 상황을 프로젝트의 history가 복잡하다고 표현한다.
기본적으로 사용하던 git merge flow
git rebase flow
불필요한 commit메세지가 사라짐과 동시에 커밋 메세지들의 순서가 달라진 걸 볼 수 있다.
merge의 경우 base와 달리 rebase는 Main의 최근 머지된 history base로 옮겨주는 걸 확인할 수 있다.