[git] Git Branch 전략

seyun·2025년 9월 27일

git

목록 보기
2/2
post-thumbnail

💡사전 지식

Branch?

Branch란, 메인 프로젝트와 별개로 새로운 변경 사항을 작업할 수 있는 별도의 작업 공간을 의미한다. Branch에서 작업을 마치면, 메인 프로젝트에 다시 병합할 수 있다.

Branch를 사용하면, 다양한 작업이나 기능을 독립적으로 관리할 수 있으며, 배포된 코드에 영향을 주지 않고 변경 사항을 테스트할 수 있다. 또한 다른 사람과 협업하는 과정에서도 필수적이다.

Fork?

Fork란, 다른 사용자의 저장소의 사본을 만드는 것을 의미한다.

이렇게 말하면, Clone과 유사해보일 수 있지만, Clone의 경우 로컬에 저장소 사본을 생성하며, 쓰기 권한이 없으면 변경 사항을 저장소에 직접 push할 수 없으며, 다른 사람의 프로젝트에 기여할 때 문제가 된다.

Fork의 경우, github 계정에 저장소 사본을 생성하여 PR을 통해 변경 사항을 제안할 수 있다.

Merge?

Merge란, 두 브랜치의 변경 사항을 하나로 결합하는 데 사용되는 명령이다. 여러 브랜치의 작업을 손실 없이 하나로 통합할 수 있다.

예를 들어, feature 브랜치에서 새롭게 개발한 내용을 main 브랜치에 병합할 때 merge가 사용된다.

PR(Pull Request)?

PR이란, 한 브랜치에서 다른 브랜치로 변경 사항을 Merge하자는 제안을 의미한다. 이는 변경 사항을 메인 코드베이스에 통합하기 전에, 협업자들이 제안된 내용을 검토할 수 있도록 해준다.

🤔 Git Branch 전략?

Git Branch 전략이란, Git을 사용하여 코드를 작성하고, 병합하고, 배포하는 과정을 관리하기 위해 사용되는 규칙 또는 가이드라인이다. 이를 통해, 여러 개발자들이 동시에 작업할 때 발생할 수 있는 병합 충돌(Merge Conflict)를 방지하고, 저장소를 체계적이고 오류 없이 관리할 수 있다.

Git Branch 전략에는 많이 사용되고 있는 여러 종류가 있는데, 각각의 특징과 장단점에 대해서 알아보고자 한다.

🤔 Git Branch 전략의 종류

1. Git Flow

Master, Develop, Feature, Release, Hotfix 이렇게 5가지 Branch로 나누는 전략이다.

브랜치 유형목적특징
Master제품 릴리스용 (항상 안정된 상태)메인 브랜치 (지속 유지)
Develop지속적인 개발메인 브랜치 (지속 유지)
Feature특정 기능 개발Develop에서 생성, 개발 완료 후 Develop으로 병합 (단기)
Release릴리스 준비 및 버그 수정Develop에서 생성, 릴리스 준비 후 MasterDevelop에 병합 (단기)
Hotfix운영 환경의 긴급 버그 수정Master에서 생성, 문제 해결 후 MasterDevelop에 병합 (단기)
  • 장점:
    • 병렬적으로 개발이 가능
    • 작업을 분리하여 체계적으로 관리함
    • 다중 버전 코드 관리에 이상적임
  • 단점:
    • 브랜치가 많아 복잡함
    • 병합 단계가 많아 충돌 가능성 증가
    • 커밋 기록이 광범위하여 디버깅이 어려움
    • CI/CD에 부적합

2. GitHub Flow

Master, Feature 이렇게 2가지 Branch로 나누는 전략이다.

브랜치 유형목적특징
Master가장 안정적인 최신 코드 (항상 배포 가능한 상태)메인 브랜치
Feature새 기능 구현 또는 버그 수정Master에서 생성, 완료 후 Master로 병합
  • 장점:
    • 빠르고 간결함
    • 짧은 개발 주기 및 잦은 릴리스, 애자일 방법론에 적합함
    • 소규모 팀 및 단일 버전 웹 애플리케이션에 적합함
  • 단점:
    • 다중 코드 버전 관리에 부적합
    • 개발 브랜치 부재로 마스터 코드가 불안정해질 위험성 존재
    • 마스터 브랜치가 개발 및 운영 목적으로 혼재될 수 있음
    • 팀이 커질수록 병합 충돌 빈번

3. Gitlab Flow

Master, Develop, Feature, Release 이렇게 4가지 Branch로 나누는 전략이다.

브랜치 유형목적특징
Master안정적인 릴리스 준비 코드메인 운영 브랜치
Develop새 기능 및 버그 수정 코드신규 개발 통합 브랜치
Feature새 기능 구현 또는 버그 수정Develop에서 생성, 완료 후 Develop으로 통합
Release신규 릴리스를 위한 기능/버그 통합Develop에서 생성, 완료 후 DevelopMaster에 병합
  • 장점:
    • 대규모 팀 및 프로젝트에 적합함
    • 개발 코드와 운영 코드가 명확하게 분리되어 안전함
    • 각 기능이 독립된 브랜치에서 개발되어 충돌 감소
    • 동시 작업으로 기능 개발 속도가 빠름
  • 단점:
    • Git에 익숙하지 않은 팀에게는 복잡할 수 있음
    • 기능 브랜치와 Develop 간의 차이로 인해 병합 충돌 발생 가능
    • 릴리스 전 Develop 브랜치에 병합이 필요

🧑🏻‍⚖️ 결론

다양한 브랜치 전략을 찾아본 결과, 팀의 규모 등의 특징에 따라서 적합한 브랜치 전략이 달라진다. 웹 개발자의 입장에서 봤을 때는, 웹 애플리케이션 특성 상 가장 최신의 버전 하나만을 사용자에게 제공하므로, 지속적인 CI/CD가 중요하고한다. 그렇기 때문에 Github Flow 전략이 가장 보편적으로 사용되는 것 같다.

📝 참고자료

profile
프론트엔드 개발자 준비 중

0개의 댓글