git branch를 깔끔하게 만들도록 도와주는 방법론
- git flow
- github flow
- gitlab flow
- trunk-based
- 등등
이런 방법론으로 branch를 만들면 브랜치관리가 쉬워지고 팀원이 많아도 개발절차가 매끄러워짐
git flow 전략
프로그램이 항상 안정적인 release를 해야한다면(ex.게임개발) git flow전략을 쓰면 됨
git flow는 크게 5개 브랜치를 운영
- main branch
- develop branch(개발용)
- feature branch(develop에 기능추가용)
- hotfix branch(main 버그해결용)
- release branch(develop branch를 main branch에 합치기 전에 최종 테스트용)
Trunk-based 전략
바로 대중에 배포를 해도 상관없는 프로그램이고 크게 대격변 업데이트를 안하는 안정적은 프로그램이면 많은 branch를 만들 필요가 없음
- main branch
- feature branch(기능 추가용)
- 기능추가, 버그픽스가 필요하면 main 브랜치에서 새로운 브랜치를 하나 만들어서 코드를 짬
- 브랜치마다 작명 잘하는게 중요
- 기능이 완성되었으면 main 브랜치에 합침
- 이제 브랜치 쓸데없으니 삭제
- main 브랜치에 있는 코드를 필요할 때 마다 유저들에게 배포
결론적으로 어느 정도 개발이 진척이 되었거나 프로 개발자로 구성되어있는 팀이면 trunk-based를 쓰는게 훨씬 편리함
최근 유행한 CI/CD 이런 식으로 개발하는 곳들도 trunk0based 개발방식을 적용
출시된 버전의 안정성이 중요한 프로그램들, 아직 뼈대가 확실하지 않아 연구식으로 개발하는 프로그램들은 git flow가 적절할 수 있음
- merge를 할때 어떤 방법을 쓰는 것이 좋은가?
기록을 남겨야하는 중요한 브랜치를 merge할 땐 3-way merge
기록을 남길 필요없는 쓸데없는 브랜치를 merge할 땐 squash, rebase 쓰면 됨
취향의 차이일뿐이니 그때그때 원한는 방법을 선택하면 됨
댓글