✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨
💜 코드프레소 이러닝 강의 수강 중 - 실무자가 알려주는 Git 활용한 프로젝트 관리 💜
😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎
브랜치가 왜 필요할까요?
- 소프트웨어는 지속적으로 변경된다
- 소프트웨어에 대한 변경은 개발 진행중이나 개발이 완료되어 사용중인 제품에서 발생하는 문제점을 해결하거나 개선하기 위해 발생할 수 있다
브랜치 활용 전략
- Git을 이용한 브랜치 활용 방식은 개인/조직마다 다를 수 있다
- 브랜치 활용 전략은 소스코드의 효율적인 관리를 위해 프로젝트의 모든 리스크를 최소화하는 방향으로 일관되고 생산적인 방식으로 조직에 맞게 프로세스화 시켜야 한다
브랜치 활용 전략 모델
- feature 별 branch
- 개발자별 branch
- 스프린트 주기별 branch
- 사내 검증 단계별 branch
- 브랜치 활용 전략 모델(방법론) : GitFlow
- 실제 기업에서는 GitFlow 모델을 조직에 맞게 약간 변경하여 사용하곤 한다!
GitFlow 모델
- 아래의 브랜치를 활용하여 변경점을 관리하는 모델이다
- master branch
- 실제 고객에게 릴리즈되는 브랜치(production)
- 모든 변경사항은 결국 master로 최종 반영되어야 한다
- master 브랜치를 기준으로 develop 브랜치를 분기하여 개발을 진행한다
- develop branch
- 실제 개발의 중심이 되는 브랜치
- 즉, 모든 기능이 추가되고 버그가 수정되고, 고객에게 배포 가능한 수준이 되면 develop의 내용은 master에 최종 반영되어야 한다
- 다음 배포할 기능을 개발하는 브랜치
- feature branch
- 기능 자체를 개발하는 브랜치
- develop 브랜치로부터 분기되어 사용된다
- feature 브랜치의 단위는 기능, 스프린트 주기 등이 될 수 있다
- 기능 개발이 완료되거나 스프린트 주기가 종료되면 develop 브랜치로 내용을 merge한다
- develop 브랜치로 merge가 완료되면, 해당 feature 브랜치는 삭제된다
- release branch
- 배포를 준비(검증, 이슈 수정 등)하는 브랜치
- 배포 가능한 상태가 되면 master 브랜치로 병합한다
- release 브랜치에서 기능 점검시 발견한 이슈에 대한 수정사항은 반드시 develop에 병합해야 한다!
- 배포 준비가 완료되면, 최종 master로 병합하고 tag를 명시해야 한다
- hotfix branch
- 배포한 버전에서 긴급하게 수정이 필요한 장애 및 버그 발생 시 대응하는 브랜치이다
- hotfixs는 master로부터 분기되며, 이슈가 수정되면 수정사항은 master, develoop 브랜치에 최종 반영되어야 한다
$ git-flow --help
위의 명령어를 통해 git-flow 에 대한 사용 방법을 알 수 있다
참고로 git-flow는 별도의 설치 없이 자동으로 git 안에 있다!
$ git flow init
위의 명령어를 통해 레포지토리를 초기화한다
그럼 아래와 같이 gitflow에 맞게 초기화된다
default로 유지하고 싶으면 계속 엔터를 누르고, 브랜치 명을 바꾸고 싶으면 입력 후 엔터를 치면 된다
GitFlow - 기능 개발
$ git flow feature start [개발한 기능명]
git flow를 통해 기능 개발을 하려면, 위의 명령어를 통해 실행하면 된다
위의 명령어를 사용하여 로그인 기능을 만든다고 가정하면 아래와 같이 브랜치가 생성 및 이동이 된다
GitFlow - 기능 개발 완료
기능 개발이 완료되면 아래의 명령어를 통해 완료됨을 알린다
$ git flow feature finish [개발된 기능명]
위의 명령어를 입력하면 아래와 같이 개발된 feature의 브랜치가 develop 브랜치에 자동으로 merge되고 삭제된다
GitFlow - 릴리즈 시작
GitFlow에서는 develop 브랜치에서 어느정도 개발이 완료되면 이를 배포하기 위해 release 브랜치에서 검증할 수 있다
이를 위해 아래의 명령어를 통해 release를 시작하면 된다
$ git flow release start [버전명]
만약 버전명이 '1.0'인 경우 아래와 같은 결과가 발생한다
-> 자동으로 브랜치가 생성되고 이동된다
GitFlow - 릴리즈 종료
- 릴리즈 브랜치에서는 고객에게 배포 전 이슈를 확인하고 수정하는 작업을 한다
- 검증이 완료되면 릴리즈 브랜치의 모든 내용은 devlop 브랜치에 merge되고, master 브랜치에도 merge 및 tag가 되어야 된다
- 위의 모든 과정은 아래의 명령어를 통해 자동으로 수행이 가능하다!
$ git flow release finish [버전명]
위의 명령어를 입력하면 먼저 아래와 같이 master 브랜치에 해당 버전의 release 브랜치를 merge 한다는 내용이 뜬다
이를 저장하고 다음으로 넘어가면 아래와 같이 태그를 생성한다는 내용이 나타난다
그럼 저기다 태그 메시지를 작성한 후 저장한다
그리고 devleop 브랜치에 merge하는 메시지 창이 나타난다
여기다 머지 메세지 쓰고 저장을 해준다
그리고 확인해보면 아래와 같이 merge가 되었다는 내용이 나타난다
또한 확인해보면 release 브랜치는 자동으로 삭제된다
GitFlow - 긴급 이슈 발생시
- 이미 고객에게 릴리즈된 소프트웨어에서 긴급하게 수정되어야 할 부분이 있을 때 사용되는 브랜치
- master 브랜치에서 분기되어 hotfixs 브랜치가 만들어지고, 버그 수정이 완료되면 해당 내용은 develop과 master 브랜치에 merge 된 후 master에 tag를 달아줘야 한다
- 이 모든 과정을 아래의 명령어를 통해 수행할 수 있다
-
$ git flow hotfix start [버전명]
GitFlow - 긴급 이슈 해결
- 이슈의 트러블슈팅이 완료되면 아래의 명령어를 수행한다
$ git flow hotfix finish [버전명
- 그럼 이제 얘도 릴리즈처럼 순차대로 master 브랜치에 merge -> master에 tag -> develop 브랜치에 merge 되는 화면이 나타나고 hotfix 브랜치는 삭제된다!
'코드프레소 체험단 > 실무자가 알려주는 Git' 카테고리의 다른 글
[실무자가 알려주는 Git 활용한 프로젝트 관리] Git 브랜치의 이해 (0) | 2022.01.16 |
---|---|
[실무자가 알려주는 Git 입문] Git 기본 플로우 이해 (4) (0) | 2022.01.12 |
[실무자가 알려주는 Git 입문] Git 기본 플로우 이해 (3) (0) | 2022.01.11 |
[실무자가 알려주는 Git 입문] Git 기본 플로우 이해 (2) (0) | 2022.01.11 |
[실무자가 알려주는 Git 입문] Git 기본 플로우 이해 (1) (0) | 2022.01.11 |
댓글