팀 프로젝트를 진행하면서 나는 효율적인 브랜치 관리와 안정적인 코드 배포를 위해 Git Flow를 사용해 보았다.
Git Flow는 명확한 브랜치 전략을 통해 팀원 간의 협업을 원활하게 하고, 코드의 품질을 높이는 데 큰 도움이 되었다.
이번 글에서는 Git Flow의 정의, 기본 개념, 브랜치 전략, 장단점, 그리고 실제 사용 예제를 통해 Git Flow를 효과적으로 활용하는 방법에 대해 자세히 알아보자.
Git Flow란
Git Flow는 Git으로 형상 관리를 할 때, 브랜치를 효율적으로 관리하기 위해 사용하는 브랜치 관리 전략이다.
(Branch Management Strategy)
Git Flow를 사용하는 이유?
프로젝트의 규모가 작거나 개인이 개발할 때는 메인 브랜치에서 작업해도 큰 문제가 없다. 하지만 프로젝트가 커지고 팀 단위로 개발이 이루어지면, 무분별하게 브랜치가 생성되어 충돌이 빈번해지고 생산성이 떨어질 수 있다.
이런 상황을 방지하고 협업을 원활하게 하기 위해 Git Flow를 사용한다.
Git Flow는 체계적인 브랜치 관리를 통해 효율적인 협업과 안정적인 릴리즈를 가능하게 함. 따라서,
Git Flow를 사용하면 프로젝트 관리와 협업을 개선하고 팀의 생산성을 높이며 소프트웨어 품질을 향상시킬 수 있다.
개발자들은 규칙을 중요시하기 때문에 Git을 사용하여 프로젝트를 진행할 때 Git Flow 전략을 통해 관리하는 것이 더욱 효율적이다. 많은 팀과 개발자들이 Git Flow를 채택하여 효율적인 프로젝트 관리를 실현하고 있다.
Git Flow의 장단점
장점:
- 체계적인 브랜치 관리로 인해 협업이 원활
- 코드의 안정성과 품질을 높일 수 있다.
- 긴급한 버그 수정이 용이
단점:
- 초기 설정과 학습 곡선이 있을 수 있다.
- 소규모 프로젝트에는 다소 복잡하게 느껴질 수 있다.
Git Flow의 Branch 종류
- master(main) 브랜치: 배포된 소스 코드나 배포될 소스를 저장하는 브랜치
- develop 브랜치: 배포를 목표로 개발을 진행하는 브랜치
- feature 브랜치: 다음 릴리즈에 포함될 기능이나 앞으로 추가될 기능을 개발하는 브랜치
- hotfix 브랜치: 배포된 버전에서 발생한 문제를 해결하기 위해 사용하는 브랜치
- release 브랜치: 배포 준비가 완료된 소스를 저장하는 브랜치
예시
A는 쇼핑몰에 검색 기능을 추가하고, B는 사용자 리뷰 기능을 추가한다고 가정해보자.
- develop 브랜치에서 feature 브랜치 생성
- A는 feature/search 브랜치를 생성하여 검색 기능을 개발
- B는 feature/review 브랜치를 생성하여 리뷰 기능을 개발
- feature 브랜치에서 작업 진행
- A는 feature/search 브랜치에서 검색 기능을 개발하고, B는 feature/review 브랜치에서 리뷰 기능을 개발
- 각자 기능을 완성하면서 커밋을 진행
- 개발 완료 후 feature 브랜치에서 develop 브랜치로 병합 요청
- A와 B는 기능 개발이 완료되면 각각 feature 브랜치에서 develop 브랜치로 병합 요청(pull request)을 보낸다
- release 브랜치에서 QA 진행
- QA 팀은 develop 브랜치로 병합된 검색 기능과 리뷰 기능을 테스트하기 위해 release 브랜치를 생성
- QA 테스트가 진행되며, 버그가 발견되면 release 브랜치에서 수정
- QA 테스트 통과 후 master, develop 브랜치로 병합
- QA 테스트가 통과되면 release 브랜치를 master 브랜치와 develop 브랜치에 병합하여 배포 준비를 마친다
- 운영 서버에서 버그 발생 시 hotfix 브랜치 생성
- 운영 서버에 배포된 버전에서 버그가 발생하면, master 브랜치에서 hotfix 브랜치를 생성하여 버그를 수정
- 버그 수정 후 master와 develop 브랜치에 병합
- 버그를 수정한 후 hotfix 브랜치를 master 브랜치와 develop 브랜치에 병합하여 배포하고, 다음 개발에 반영
물론, 이 예시는 Git Flow의 기본적인 싸이클을 설명하기 위한 것이다.
이런 싸이클을 반복하면서 개발을 진행하게 된다.
처음엔 어려울 수 있지만, 주기적으로 반복하다 보면 점차 익숙해질 것!
감사합니다.
'Github&Git' 카테고리의 다른 글
[Git · Github] fork 해온 레포지토리 잔디 심는 방법:Git Mirror Push (0) | 2024.06.17 |
---|---|
[Git] git commit - -amend로 마지막 커밋 수정 방법 (1) | 2024.05.29 |
[Github] Repository 접근 권한 변경 방법( Public / Private) (0) | 2024.05.22 |
[Github] 깃허브 Readme에 이미지 올리기 (0) | 2024.05.17 |
[Git] 좋은 Commit message 규칙 (0) | 2024.05.07 |