이번 Umc 3기에서, 프론트엔드(Android, IOS) 학우들과 함께 협업을 하기 위해서 Git-flow를 이용해 팀프로젝트를 꾸려 나갈 것 같습니다.
우선, Git-flow를 왜 사용하는지와 구성요소, 그리고 기존 Git과의 차이점과 사용하였을 때의 장점들을 설명드리려고 합니다.
Git-flow를 사용한 Branch 전략
Git-flow란 무엇인가 ?
- branch를 어떻게 운영할 것인지에 대한 유용한 사례
- 이러한 사례를 쉽게 실수없이 운영할 수 있게 도와주는 프로그램
으로 볼 수 있습니다. 현재 Git으로 개발할 때, 표준으로 사용되고 있는 방법론이라고도 볼 수 있습니다.
Git-flow에는 5가지의 branch가 존재합니다.
- master : 제품으로 출시될 수 있는 branch, 제품을 배포하는 기준 branch이다.
- develop : 개발 branch로서, 사람들이 작업한 기능들을 merge 시키는 branch이다.
- feature : 단위(unit) 기능들을 개발하는 branch로서, 작업한 기능 검증이 완료되면 develop branch로 merge 하는 branch이다.
- release : 배포를 위해 master branch로 보내기 전에, 먼저 QA(품질 검사, 검증)을 하기 위한 branch이다. (오류 방지)
- hotfix : master branch로 배포했을 때, 버그가 생기면 긴급하게 수정할 수 있는 branch이다.
주요 branch는 master, develop이고, 나머지는 개발과 배포 그리고 검증을 위한 부가적인 branch로 볼 수 있다.
- master branch에서 start
- 동일한 branch를 develop에도 생성한다. 개발자들은 develop branch에서 개발을 진행한다.
- 개발을 진행하다가, 단위 기능(ex) 로그인, 댓글 작성 및 수정..) 구현이 필요하면 개발자들은 각자 develop branch에서 feature branch에서 각각의 단위 기능들을 구현한다.
- 완료된 feature branch는 검토를 거쳐 다시 develop branch에 merge 한다.
- 이제 모든 기능들을 구현했으면, develop branch를 release branch로 만든다. 그리고 QA를 통해 오류 수정을 한다.
- 모든 것이 완료되면 이제 release branch를 master, develop branch로 보낸다. master branch에서는 버전 추가를 위해 태그를 생성하고 배포한다.
- 배포를 하고 난 이후, 오류를 발견하게 되면 hotfix branch 만들어 이를 통해 긴급 오류를 수정하고, 바로 수정 배포를 한다.
React, Bootstrap과 같이 대규모 개발과 같은 경우에는 기존 Fork와 Pull request를 통해 개발한다.
Fork는 Branch와 비슷하지만, 프로젝트 주최자의 Repository를 통째로 복제해서 개발을 진행하는 방식입니다. 이를 통해 개발자들이 기능 구현을 하고 Pull Request를 던져 주최자와 reviewer가 이를 확인하고 오류가 없고, 가독성이 좋은 코드라고 판단되면 만든 기능들을 Merge 해준다.
기존 Fork, Pull Request 방식과 다른 Git-flow 방식은 관리하고, 신경 써야 할 branch들은 더욱 많아졌지만, 그만큼 체계적인 branch 전략이라고 생각합니다. branch를 세분화해서 개발환경을 구축한다면, 그만큼 안정성에서는 뛰어날 것이라고 판단됩니다. 우선적으로 개발 유형이 소규모인지, 대규모인지 잘 생각해보고, 이에 걸맞게 자신만의 branch 전략을 구축하는 것이 중요하다고 생각합니다. Git-flow 설치 및 사용법을 개발을 하면서 숙지하는 방향으로 가려고 합니다.
<참고 자료>
https://techblog.woowahan.com/2553/
'DevOps > Git' 카테고리의 다른 글
[git] git commit message 한글 깨짐 현상 해결 (1) | 2024.02.27 |
---|---|
[git] git tag 기능에 대해 알아보자 (0) | 2024.02.14 |
[Git] needs merge : you need to resolve your current index first (0) | 2023.11.25 |
[Git] 프로그램 버전 관리와 코드 공유 및 협업을 위한 Git & Github에 대해 알아보자 (2) | 2023.10.22 |
협업 및 팀플을 위한 Git 사용 (0) | 2022.08.06 |