Git/[Git] git branch 종류 및 naming 버전 관리

[Git] git branch 종류 및 naming 버전 관리

재윤 2025. 1. 2. 21:50
반응형

Branch 종류

기본 브랜치

  1. main/master branch
  • 제품으로 출시될 수 있는 브랜치
  • 항상 배포 가능한 상태를 유지하는 브랜치
  • 주요 제품 릴리스 코드가 저장됨
  • 주의할 부분 → 이 브랜치에서는 직접 커밋 지양, Pull Request를 통해 병합

개발 브랜치

  1. Develop 브랜치
  • 새로운 기능 개발과 버그 수정을 통합하는 브랜치
  • 각 기능 브랜치와 버그 수정 브랜치가 병합되는 곳

기능 브랜치

  1. Feature 브랜치
  • 특정 기능이나 개선 작업을 위해 생성
  • Develop 브랜치에서 분기하고 작업 완료 후 Develop에 병합
  • 네이밍 예시 → feature/login-ui, feature/payment-gateway

핫픽스 브랜치

  1. Hotfix 브랜치
  • 배포된 제품에서 발겨된 긴급 문제를 수정하기 위해 생성
  • Main에서 분기하고 수정 후 Main과 Develop에 병합
  • 네이밍 예시 → hotfix/login-bug, hotfix/payment-error

릴리스 브랜치

  1. Release 브랜치
  • 배포 준비 단계에서 사용하는 브랜치
  • 개발이 완료된 상태에서 최종 테스트 및 배포 관련 설정
  • 네이밍 예시 → release/v1.0.0

버그 수정 브랜치

  1. Bugfix 브랜치
  • 특정 버그를 수정하기 위해 생성
  • Develop 브랜치에서 분기하고 완료 후 다시 Develop에 병합
  • 네이밍 예시 → bugfix/signup/validation

브랜치 네이밍 규칙

네이밍 규칙 설정

  1. 일관성: 프로젝트 구성원 전체가 동일한 규칙을 따르도록 명확히 정의
  2. 간결성: 이름은 간결하면서도 의미를 명확히 전달해야함
  3. 구조화된 형식:
    • 예시: feature/user-authentication, hotfix/critical-crash.
  4. [브랜치타입]/[작업내용 또는 이슈 번호]

브랜치 타입 Prefix

  • feature: 새 기능 추가 작업
  • hotfix: 긴급 문제 수정
  • bugfix: 일반 버그 수정
  • release: 릴리스 준비
  • test: 테스트 용도
  • refactor: 코드 리팩토링
  • chore: 문서 작업이나 설정 변경 등 부수적인 작업

작업 내용 명시

  • 작업 내용을 영어 소문자로 작성
  • 단어는 ``(하이픈)으로 구분
  • 예시  
    • feature/user-profile-update
    • bugfix/fix-email-validation

이슈 트래커와 연동

  • Git과 JIRA 또는 GitHub Issues를 연동한 경우, 이슈 번호를 포함
  • 예시:
    • feature/DS-1234-login-ui
    • bugfix/GH-5678-fix-cart-error

네이밍 예시

브랜치 타입 네이밍 예시

Feature feature/user-profile-page, feature/api-auth
Bugfix bugfix/DS-1023-null-pointer, bugfix/fix-dropdown
Hotfix hotfix/critical-payment-bug, hotfix/server-crash
Release release/v1.2.0, release/production-ready
Refactor refactor/optimize-db-queries, refactor/css-cleanup

C언어로 각 브랜치들을 한 번 공부를 해보자!

Main 브랜치

  • 브랜치이름 → main
  • 배포 가능한 기본 상태의 코드
#include <stdio.h>

void main() {
    printf("Welcome to the Application!\\n");
}

Develop 브랜치

  • 브랜치 이름 → develop
  • Main에서 분기하여 새로운 기능을 통합하고 테스트함
  • Main 보다 한 단계 앞선 코드 상태 유지
#include <stdio.h>

void printWelcomeMessage() {
    printf("Welcome to the Application!\\n");
}

void main() {
    printWelcomeMessage();
}

Feature 브랜치

  • 브랜치 이름  feature/user-input
  • 사용자 입력 기능 추가 작업
  • Develop 브랜치에서 분기하여 작업하며, 작업 완료 후 Develop에 병합
#include <stdio.h>

void printWelcomeMessage() {
    printf("Welcome to the Application!\\n");
}

void getUserInput() {
    char name[50];
    printf("Enter your name: ");
    scanf("%49s", name);
    printf("Hello, %s!\\n", name);
}

void main() {
    printWelcomeMessage();
    getUserInput();
}

Hotfix 브랜치

  • 브랜치 이름 hotfix/fix-buffer-overflow
  • 긴급 수정하는 코드
  • Main 브랜치에서 분기하여 긴급한 버그를 수정한 브랜치
  • 수정된 코드는 Main과 Develop 브랜치에 병합
#include <stdio.h>
#include <string.h>

void printWelcomeMessage() {
    printf("Welcome to the Application!\\n");
}

void getUserInput() {
    char name[50];
    printf("Enter your name: ");
    if (scanf("%49s", name) != 1) {
        printf("Error reading input. Please try again.\\n");
        return;
    }
    printf("Hello, %s!\\n", name);
}

void main() {
    printWelcomeMessage();
    getUserInput();
}

Relase 브랜치

  • 브랜치 이름  release/v1.0.0
  • 코드: 배포 준비 작업(버전 정보 추가)
  • 배포 준비를 위해 릴리스 버전 정보를 추가하고 최종 테스트를 진행
  • 작업 완료 후 Main 브랜치에 병합.
#include <stdio.h>
#define VERSION "1.0.0"

void printWelcomeMessage() {
    printf("Welcome to the Application (Version: %s)!\\n", VERSION);
}

void getUserInput() {
    char name[50];
    printf("Enter your name: ");
    scanf("%49s", name);
    printf("Hello, %s!\\n", name);
}

void main() {
    printWelcomeMessage();
    getUserInput();
}

Bugfix 브랜치

  • 브랜치 이름   bugfix/input-error-handling
  • 코드: 버그 수정(입력 오류 처리)
  • Develop 브랜치에서 분기하여 버그를 수정하는 브랜치
  • 작업 완료 후 Develop에 병합
#include <stdio.h>
#include <string.h>

void printWelcomeMessage() {
    printf("Welcome to the Application!\\n");
}

void getUserInput() {
    char name[50];
    printf("Enter your name: ");
    if (scanf("%49s", name) != 1) {
        printf("Error reading input. Please try again.\\n");
        return;
    }
    printf("Hello, %s!\\n", name);
}

void main() {
    printWelcomeMessage();
    getUserInput();
}

브랜치 네이밍 요약

브랜치 이름 설명

main 배포 가능한 기본 상태 유지
develop 기능 개발과 통합
feature/user-input 사용자 입력 기능 추가 작업
hotfix/fix-buffer-overflow 긴급한 버퍼 오버플로 수정
release/v1.0.0 배포 준비, 버전 정보 추가
bugfix/input-error-handling 입력 오류 처리 버그 수정

 

브랜치 트리

 

도움받는 글

https://junjunrecord.tistory.com/131

 

[Git] branch 종류 및 naming 참고 및 주의사항

Branch 종류 1. master branch 제품으로 출시될 수 있는 브랜치 2. develop branch 다음 출시 버전을 개발하는 브랜치 - 기능 개발을 위한 브랜치들을 병합하기 위해 사용한다. 즉, 모든 기능이 추가되고 버

junjunrecord.tistory.com

https://minha0220.tistory.com/72 

 

협업의 첫 번째 단계 ④ git branch 네이밍 규칙

git은 하나의 프로젝트를 기능과 목적에 따라 분산 작업을 할 수 있습니다. 이를 branch를 나눠서 작업을 한다고 하는데요. 위 사진을 보면 Main, Hotfix, Release 등 다양한 branch 이름이 있습니다. Main은

minha0220.tistory.com

 

반응형