본문 바로가기
코드프레소 체험단/실무자가 알려주는 Git

[실무자가 알려주는 Git 활용한 프로젝트 관리] Git 브랜치 활용

by 의정부핵꿀밤 2022. 1. 16.
728x90

✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨

💜 코드프레소 이러닝 강의 수강 중 - 실무자가 알려주는 Git 활용한 프로젝트 관리 💜

😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎

https://www.codepresso.kr/

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr


브랜치가 왜 필요할까요?

  • 소프트웨어는 지속적으로 변경된다
  • 소프트웨어에 대한 변경은 개발 진행중이나 개발이 완료되어 사용중인 제품에서 발생하는 문제점을 해결하거나 개선하기 위해 발생할 수 있다

 

 

브랜치 활용 전략

  • 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로 유지하고 싶으면 계속 엔터를 누르고, 브랜치 명을 바꾸고 싶으면 입력 후 엔터를 치면 된다

git flow init

 

 

 

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'인 경우 아래와 같은 결과가 발생한다

-> 자동으로 브랜치가 생성되고 이동된다

1.0 버전 릴리즈 시작

 

 

 

 

GitFlow - 릴리즈 종료

  • 릴리즈 브랜치에서는 고객에게 배포 전 이슈를 확인하고 수정하는 작업을 한다
  • 검증이 완료되면 릴리즈 브랜치의 모든 내용은 devlop 브랜치에 merge되고, master 브랜치에도 merge 및 tag가 되어야 된다
  • 위의 모든 과정은 아래의 명령어를 통해 자동으로 수행이 가능하다!
$ git flow release finish [버전명]

 

위의 명령어를 입력하면 먼저 아래와 같이 master 브랜치에 해당 버전의 release 브랜치를 merge 한다는 내용이 뜬다

merge to master

 

이를 저장하고 다음으로 넘어가면 아래와 같이 태그를 생성한다는 내용이 나타난다

그럼 저기다 태그 메시지를 작성한 후 저장한다

tagging at master

그리고 devleop 브랜치에 merge하는 메시지 창이 나타난다

여기다 머지 메세지 쓰고 저장을 해준다

merge to develop

 

그리고 확인해보면 아래와 같이 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 브랜치는 삭제된다!
728x90

댓글