[Git] Git 브랜치 전략 : Git-Flow, Github-Flow, Gitlab-Flow

2025. 6. 4. 01:13·Git
728x90

 

 

0. PR (Pull Request) 과정

  1. git clone : github의 저장소 복제
    1. 브랜치 생성 및 이동
    2. 소스코드 작성 및 변경
  2. git add : 작업 내용을 스테이징 영역에 저장
  3. git commit : 변경 사항 저장
  4. git push : 원격 저장소에 소스코드 올림
  5. Pull Request : fork한 기존 저장소에 소스코드 반영

 

 

 

1. Git Flow

1.1. Branch

  • master : 기준이 되어 제품을 배포하는 브랜치
  • develop : 개발 브랜치
    • 개발자들이 이 브랜치로 각자 작업한 기능을 Merge
  • feature : 단위 기능을 개발하는 브랜치
    • 기능 개발이 완료되면 develop 브랜치에 Merge
  • release : 배포를 위해 master로 보내기 전, 먼저 QA(품질검사)를 하기 위한 브랜치
  • hotfix : master 브랜치로 배포를 했는데, 버그가 생겼을 때 긴급 수정하는 브랜치

 

1.2. 과정

  • master 브랜치에서 develop 브랜치 분기
  • 개발자들은 develop 브랜치에 자유롭게 commit
  • 기능 구현이 있는 경우 develop 브랜치에서 feature-* 브랜치 분기
  • 배포를 준비하기 위해 develop 브랜치에서 release-* 브랜치 분기
    • 테스트 진행 시 발생하는 버그 수정은 release-* 브랜치에 직접 반영
  • 테스트가 완료되면 release 브랜치를 master와 develop에 merge

 

 

 

2. Github Flow

  • Git-flow가 복잡하다고 나온 전략
    • hotfix와 feature 브랜치를 구분하지 않고 우선순위를 다르게 한다
  • 수시로 배포가 일어나며, CI와 배포가 자동화된 프로젝트에 유용

2.1. 과정

  • master 브랜치는 어떤 때든 배포 가능
    • stable 상태로 product에 배포되는 브랜치이므로 엄격한 role과 함께 사용
    • merge 전 충분한 테스트 필요
  • master 에서 새로운 일을 위한 브랜치를 만든다면, 이름을 명확히 작성
    • 브랜치는 항상 master에서 만든다
    • 브랜치 이름은 자세하게 어떤 일을 하는지 작성 (새로운 기능 추가, 버그 해결 등)
    • 커밋 메시지를 명확하게 작성
  • 원격 프랜치로 수시로 push 하자
    • Git-flow와 상반
    • 항상 원격지에 자신이 하고 있는 일을 올려 다른 사람들도 확인 가능하도록 한다
  • 피드백이나 도움이 필요할 때, 그리고 merge 준비가 되었을 때 pull request 생성
    • PR은 코드 리뷰를 도와주는 시스템
    • merge 준비가 완료되면 master 브랜치로 반영 요구
  • 기능에 대한 리뷰, 논의가 끝난 후 master로 merge
    • 바로 product로 반영될 기능이므로 충분한 논의 이후 반영
      • 물론 CI도 통과 필요
  • master로 merge되고 push되었을 때는 즉시 배포되어야 한다
    • master 로 merge가 일어나면 자동으로 배포 되도록 설정

 

 

 

3. Gitlab Flow

  • Git-flow와 Github-flow의 절충안

3.1. Branch

  • production
    • Git-flow의 master 브랜치 역할
      • Gitlab-flow의 master 브랜치는 production 브랜치로 병합
    • 오직 배포만을 담당
    • 이 브랜치에 릴리즈된 코드가 항상 프로젝트의 최신 버전을 유지할 필요 X
    • master 이상 권한만 push 가능
  • pre-production
    • production 브랜치로 결과를 넘기기 전, 테스트를 수행하는 브랜치

 

3.2. 과정

  • developer 권한 사용자는 master 브랜치에서 신규 브랜치 추가
  • 신규 브랜치에서 소스를 commit하고 push
  • merge request를 생성하여 master 브랜치로 merge 요청
  • master 권한 사용자는 developer 사용자와 함께 리뷰 진행 후 master 브랜치로 merge
  • 테스트가 필요하다면, master에서 production 브랜치로 merge 하기 전에 pre-production 브랜치에서 테스트

 

 

 

 

 


📌  References

https://velog.io/@kw2577/Git-branch-%EC%A0%84%EB%9E%B5

 

Git branch 전략(Git-Flow, Github-Flow, Gitlab-Flow)

Branch란?브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니

velog.io

https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-github-flow-git-flow-%F0%9F%93%88-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EC%A0%84%EB%9E%B5

 

[GIT] 📈 깃 브랜치 전략 정리 - Github Flow / Git Flow

GIT 브랜치 전략 브랜치 전략이란 여러 개발자가 하나의 저장소를 사용하는 환경에서 저장소를 효과적으로 활용하기 위한 work-flow다. 브랜치의 생성, 삭제, 병합 등 git의 유연한 구조를 활용해서,

inpa.tistory.com

 

 

 

 

 

 

 

 

 

728x90
저작자표시 비영리 (새창열림)

'Git' 카테고리의 다른 글

[Git] Rebase로 브랜치 병합하기 / Rebase vs Merge 차이  (3) 2022.09.25
[Git] Squash Commit / Merge : 여러 개의 Commit 합치기  (1) 2022.09.25
[Git] 원격 저장소까지 반영된 commit 되돌리기(Git Reset)  (0) 2022.09.25
[Github] Issue 및 Issue Branch 생성하여 프로젝트 관리하기  (0) 2022.09.24
[Git] Cherry-pick 변경사항 다른 브랜치에 반영하기 / 충돌(Conflict) 해결  (0) 2022.09.24
'Git' 카테고리의 다른 글
  • [Git] Rebase로 브랜치 병합하기 / Rebase vs Merge 차이
  • [Git] Squash Commit / Merge : 여러 개의 Commit 합치기
  • [Git] 원격 저장소까지 반영된 commit 되돌리기(Git Reset)
  • [Github] Issue 및 Issue Branch 생성하여 프로젝트 관리하기
s_ih_yun
s_ih_yun
  • s_ih_yun
    CODESYUN
    s_ih_yun
  • 전체
    오늘
    어제
    • 분류 전체보기 (339)
      • Web (8)
      • Java (7)
      • Spring (19)
      • Git (16)
      • MyBatis (1)
      • HTML & CSS (14)
      • JavaScript (11)
      • DevOps (4)
      • Cloud (8)
      • Lanuage (13)
        • C++ (3)
        • Python (10)
      • DB (1)
        • MySQL (1)
        • Oracle (2)
      • Computer Science (26)
        • Concept (3)
        • Algorithm (23)
      • Baekjoon (104)
        • 단계별로 풀어보기 (78)
      • CodeUp (98)
        • Python 기초 100제 (98)
      • Programmers (2)
      • Books (3)
      • etc (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Syun's Pages
  • 인기 글

  • 태그

    Programmers
    CodeUp 기초 100제
    HTML
    웹
    myBatis
    aws
    CSS
    Tistory
    codeup
    BOJ
    spring
    MySQL
    JavaScript
    oracle
    단계별로 풀어보기
    db
    git
    자료구조
    Python
    Cloud
    VS Code
    java
    알고리즘
    c++
    web
    github
    clean code
    C
    SourceTree
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s_ih_yun
[Git] Git 브랜치 전략 : Git-Flow, Github-Flow, Gitlab-Flow
상단으로

티스토리툴바