본문 바로가기
쿤즈 Dev/Git

[Git Flow] Git Flow 실습: hotfix 브랜치

by Koonz:) 2024. 7. 6.
728x90

지난 글에서는 배포를 위해서 Release 브랜치를 만들고 master 브랜치와 develop 브랜치에 병합하여 배포하는 방법을 알아보았습니다. 만약에 이러한 배포 이후에 급한 문제가 발생해서 빠르게 다시 배포해야 하는 상황이 발생한다면 어떻게 해야 할까요?

이럴 때 필요한 브랜치가 바로 Hotfix 브랜치입니다.

 

이번 글에서는 Git Flow를 사용하여 hotfix(핫픽스) 브랜치를 생성하고 작업하는 방법을 자세하게 설명하겠습니다. 핫픽스 브랜치는 긴급하게 수정이 필요한 버그를 빠르게 해결하고 배포할 수 있도록 도와줍니다. 이번 글에서는 실제 예제를 통해서 핫픽스 브랜치를 생성하고 작업하는 과정을 단계별로 알아보겠습니다.


hotfix (핫픽스) 브랜치란

hotfix 브랜치는 긴급한 버그 수정을 위해 사용되는 브랜치입니다. 이 브랜치는 master 브랜치에서 분기되어 버그를 수정한 후 master 브랜치와 develop 브랜치로 병합됩니다. 이를 통해 배포된 버전에서 발견된 버그를 신속하게 수정할 수 있습니다.

hotfix 브랜치 병합 과정

주요 특징은 다음과 같습니다.

  • master 브랜치에서 분기됩니다.
  • 버그 수정이 완료되면 master 브랜치와 develop 브랜치로 병합됩니다.
  • 이름 규칙: hotfix/[hotfix description]

hotfix 브랜치 생성

hotfix 브랜치를 생성하는 첫 번째 단계는 master 브랜치에서 새로운 hotfix 브랜치를 분기하는 것입니다. Git Flow는 이를 쉽게 수행할 수 있도록 명령어를 제공합니다.

# Git 명령어
$ git checkout master
$ git checkout -b hotfix/fix-critical-bug

# Git Flow 명령어
$ git flow hotfix start fix-critical-bug

 

위 명령어를 실행하면 master 브랜치에서 hotfix/fix-critical-bug 브랜치가 생성되고 해당 브랜치로 전환됩니다.

$ git flow hotfix start fix-critical-bug --showcommands

git config --local gitflow.branch.hotfix/fix-critical-bug.base master
git checkout -b hotfix/fix-critical-bug master
Switched to a new branch 'hotfix/fix-critical-bug'

Summary of actions:
- A new branch 'hotfix/fix-critical-bug' was created, based on 'master'
- You are now on branch 'hotfix/fix-critical-bug'

Follow-up actions:
- Start committing your hot fixes
- Bump the version number now!
- When done, run:

     git flow hotfix finish 'fix-critical-bug'

 

이제 긴급한 버그 수정을 시작할 준비가 되었습니다.


hotfix 브랜치에서 작업하기

hotfix 브랜치가 생성되었으니 이제 버그 수정을 시작할 수 있습니다. 예를 들어, 중요한 버그를 수정하고 변경 사항을 커밋합니다.

# 버그 수정
$ echo "Critical bug fix" >> new-feature-file.txt

# 변경 사항 스테이징
$ git add new-feature-file.txt

# 변경 사항 커밋
$ git commit -m "Fix critical bug in new-feature-file"

 

이제 변경 사항이 hotfix/fix-critical-bug 브랜치에 커밋되었습니다. 필요한 경우 추가적인 버그 수정을 계속할 수 있습니다.


hotfix 브랜치 병합

hotfix 브랜치에서 수정사항을 커밋했으니 이제 다시 master와 develop으로 병합하도록 하겠습니다.

# Git 명령어
$ git checkout master
$ git merge --no-ff hotifx/fix-critical-bug
$ git tag -a 1.0.2
$ git checkout develop
$ git merge --no-ff hotifx/fix-critical-bug
$ git branch -d notfix/fix-critical-bug


# Git Flow 명령어
$ git flow hotfix finish fix-critical-bug

 

hotfix 브랜치의 병합은 다음과 같은 작업 수행이 필요합니다.

  • master 브랜치로 이동
  • hotfix/fix-critical-bug 브랜치를 master 브랜치에 병합
  • master 브랜치에 현재 버전 태그 생성
  • develop 브랜치로 이동
  • hotfix/fix-critical-bug 브랜치를 develop 브랜치에 병합
  • hotfix/fix-critical-bug 브랜치 삭제

git flow를 이용해서 브랜치를 병합하는 과정에서는 다음과 같은 메시지가 나타납니다.

# Master 브랜치 병합
Merge branch 'hotfix/fix-critical-bug'
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.


# 태그 저장
# Write a message for tag:
#   fix-critical-bug
1.0.2
# Lines starting with '#' will be ignored.


# Develop 브랜치 병합
Merge branch 'hotfix/fix-critical-bug' into develop
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.

 

태그 저장 메시지가 나타났을 때 hotfix 브랜치의 이름이 fix-critical-bug 이기 때문에 태그 이름도 동일하게 할 수 있습니다. 또한 버전으로 태그를 만들 수 있으므로 새로운 버전정보를 넣어서 태그를 생성해도 됩니다.

$ git flow hotfix finish fix-critical-bug --showcommands -b

git checkout master
Switched to branch 'master'
git merge --no-ff hotfix/fix-critical-bug
Merge made by the 'ort' strategy.
 new-feature-file.txt | 1 +
 1 file changed, 1 insertion(+)
git tag -a fix-critical-bug
git checkout develop
Switched to branch 'develop'
git merge --no-ff hotfix/fix-critical-bug
Merge made by the 'ort' strategy.
 new-feature-file.txt | 1 +
 1 file changed, 1 insertion(+)
git branch -d hotfix/fix-critical-bug
Deleted branch hotfix/fix-critical-bug (was 3374ce2).

Summary of actions:
- Hotfix branch 'hotfix/fix-critical-bug' has been merged into 'master'
- The hotfix was tagged 'fix-critical-bug'
- Hotfix branch 'hotfix/fix-critical-bug' has been merged into 'develop'
- Hotfix branch 'hotfix/fix-critical-bug' has been locally deleted
- You are now on branch 'develop'

 


hotfix 브랜치의 장점

hotfix 브랜치를 사용하는 것은 여러 가지 장점을 제공합니다.

  • 긴급 버그 수정: 배포된 버전에서 발견된 긴급한 버그를 신속하게 수정할 수 있습니다.
  • 안정성 유지: hotfix 브랜치를 사용하면 버그 수정을 독립적으로 수행하여 master 브랜치의 안정성을 유지할 수 있습니다.
  • 체계적인 배포 과정: hotfix 브랜치를 사용하여 긴급한 수정 사항을 체계적으로 관리하고 배포할 수 있습니다.
  • 명확한 변경 내역: 각 hotfix에 대한 변경 내역이 명확하게 기록되어, 코드 리뷰와 디버깅이 용이합니다.

이번 글에서는 Git Flow를 사용하여 핫픽스 브랜치를 생성하고 작업하는 방법에 대해서 자세히 알아보았습니다. hotfix 브랜치르 통해 개발자는 긴급한 버그를 신속하게 수정하고, 이를 체계적으로 관리할 수 있습니다. hotfix가 완료되면 master 브랜치와 develop 브랜치에 병합하여 최신 상태를 유지할 수 있으며, 이는 팀 전체의 협업 효율성을 크게 향상시키고, 코드의 안정성을 보장하는 데 도움이 됩니다.

 

이 Git Flow 관련 글의 시리지를 통해 여러분은 Git Flow의 개념을 이해하고, 실습을 통해 실제 프로젝트에 적용하는 방법을 배우게 될 것입니다. 이 글이 여러분의 프로젝트에 도움이 되길 바랍니다. 궁금한 부분이 있으시다면 댓글로 질문을 남겨주세요. 감사합니다. 🙇🏻

 

이전 글

2024.06.08 - [쿤즈 Dev/Git] - [Git Flow] Git & Git flow 소개

 

[Git Flow] Git & Git flow 소개

안녕하세요. 이번 시리즈에서는 Git flow(깃 플로우)에 대해서 알아볼게요. Git flow를 알기 전에 Git에 대해서 먼저 알아야 해요. 서비스, 커머스 기타 등등의 많은 회사들에서 대부분 사용하고 있는

koonsland.tistory.com

2024.06.08 - [쿤즈 Dev/Git] - [Git Flow] Git Flow 설치 및 설정

 

[Git Flow] Git Flow 설치 및 설정

Git Flow에 대해서 알아봤어요. Git Flow는 소프트웨어 개발에서 Git 브랜치를 효과적으로 관리하기 위한 워크플로우입니다. 그래서 Git Flow를 사용하면 팀 전체가 체계적으로 작업할 수 있으며, 코드

koonsland.tistory.com

2024.06.15 - [쿤즈 Dev/Git] - [Git Flow] Git Flow 브랜치 모델

 

[Git Flow] Git Flow 브랜치 모델

안녕하세요. 지난 포스팅에서는 Git Flow 소개와 기본개념, 그리고 Git Flow 설치 및 설정을 하는 방법에 대해 알아보았어요. Git이 우선이고 사용을 조금 더 쉽고 편리하게 하기 위한 툴이 Git Flow입니

koonsland.tistory.com

2024.06.19 - [쿤즈 Dev/Git] - [Git Flow] Git Flow 실습: Feature 브랜치

 

[Git Flow] Git Flow 실습: Feature 브랜치

이번 글에서는 Git Flow를 사용하여 feature 브랜치를 생성하고 작업하는 방법을 자세히 알아볼게요. Git Flow의 강력한 브랜치 관리 시스템을 통해 개발자는 보다 체계적으로 기능을 개발하고 통합할

koonsland.tistory.com

2024.06.24 - [쿤즈 Dev/Git] - [Git Flow] Git Flow 실습: Release 브랜치

 

 

댓글