Git을 사용한 형상 관리 전략
변경을 추적하고 체계적으로 관리하기 위한 전략
Git을 사용한 형상 관리 전략
📌개요
형상 관리는 소스 코드 변경에 대한 모든 관리를 의미하며, 이를 통해 프로젝트의 일관성과 추적 가능성을 유지한다. 형상 관리 전략은 이러한 변경 사항을 체계적으로 관리하기 위한 방법들을 포함한다.
프로젝트와 형상 관리 툴에 따라 달라질 수 있지만, 이번엔 Git
을 기준으로 형상 관리 전략을 정리한다.
📌형상 관리 브랜치 전략
브랜치 명명 규칙이 다를 수 있지만, 보편적이라고 생각되는 정보로 정리한다.
주요 브랜치
master
브랜치:- 제품으로 출시될 수 있는 안정된 상태의 코드가 포함된다.
- 배포 가능한 버전만이 병합된다.
develop
브랜치:- 다음 출시 버전을 개발하는 브랜치다.
- 기능 개발과 버그 수정이 이루어진다.
보조 브랜치
feature
브랜치:- 새로운 기능을 개발할 때 사용된다.
develop
브랜치에서 파생하며, 작업 완료 후develop
브랜치로 병합된다.
release
브랜치:- 출시 준비를 위해 사용된다.
develop
브랜치에서 파생하며, QA 단계에서 발생한 버그를 수정한다.- 준비가 완료되면
master
와develop
브랜치로 병합된다.
hotfix
브랜치:- 배포된 버전에서 긴급하게 수정이 필요한 버그를 처리할 때 사용된다.
master
브랜치에서 파생하며, 수정 완료 후master
와develop
브랜치로 병합된다.
📌단계별 작업 흐름
- 초기 브랜치 구성:
- 프로젝트 시작 시
master
와develop
브랜치를 생성한다.
- 프로젝트 시작 시
- 기능 개발:
- 새로운 기능 개발 시
develop
브랜치에서feature
브랜치를 생성한다. - 기능 개발이 완료되면
feature
브랜치를develop
브랜치로 병합한다.
- 새로운 기능 개발 시
- 출시 준비:
- 다음 출시를 준비하기 위해
develop
브랜치에서release
브랜치를 생성한다. - QA 과정을 거치며 발생한 버그들을
release
브랜치에서 수정한다.
- 다음 출시를 준비하기 위해
- 최종 배포:
- QA가 완료되면
release
브랜치를master
와develop
브랜치로 병합한다. master
브랜치에 새로운 버전 태그를 추가한다.
- QA가 완료되면
- 긴급 수정:
- 배포된 버전에서 긴급한 버그가 발생하면
master
브랜치에서hotfix
브랜치를 생성한다. - 버그 수정이 완료되면
hotfix
브랜치를master
와develop
브랜치로 병합한다.
- 배포된 버전에서 긴급한 버그가 발생하면
📌Convention
규칙은 일관성을 유지하고, 목적과 내용을 쉽게 파악할 수 있게 도와준다.
브랜치 명명 규칙
master
브랜치:master
라는 이름을 사용한다.
develop
브랜치:develop
라는 이름을 사용한다.
feature
브랜치:feature/{기능명}
형식을 사용한다.- ex)
feature/login-page
,feature/add-user-profile
release
브랜치:release/{버전번호}
형식을 사용한다.- ex)
release/1.0.0
,release/2.1.0
hotfix
브랜치:hotfix/{수정사항}
형식을 사용한다.- ex)
hotfix/urgent-bug
,hotfix/security-patch
커밋 메시지 규칙
- 타입:
feat
: 새로운 기능 추가fix
: 버그 수정docs
: 문서 수정style
: 코드 포맷팅, 세미콜론 누락 등 (비즈니스 로직에 변경 없음)refactor
: 코드 리팩토링test
: 테스트 추가, 수정chore
: 기타 변경사항
- 형식:
{타입}: {변경사항 설명}
- ex)
feat: add login functionality
,fix: resolve user profile bug
🎯결론
형상 관리 전략은 프로젝트의 변경 사항을 체계적으로 관리하고 추적할 수 있게 하는 중요한 역할을 한다.
이를 통해 개발 팀은 코드의 일관성을 유지하고, 배포 과정에서 발생할 수 있는 문제를 최소화할 수 있다.
Git
을 활용한 형상 관리 전략은 다양한 프로젝트에 적용할 수 있으며, 각 브랜치의 역할을 명확히 정의함으로써 효율적인 개발 프로세스를 지원한다.
This post is licensed under CC BY 4.0 by the author.