Git-Flow와 GitHub-Flow 비교

023·2024년 7월 9일
1

git

목록 보기
2/2
post-thumbnail

Git-Flow와 GitHub-Flow

버전 관리를 위한 Git 워크플로우에는 다양한 방법론이 존재한다. 그중에서 대표적인 두 가지 워크플로우는 Git-FlowGitHub-Flow이다. 이 두 워크플로우는 프로젝트 개발 과정에서의 브랜칭 전략과 협업 방식을 정의하여, 효율적이고 체계적인 개발을 지원한다. 아래에서는 각각의 워크플로우에 대해 자세히 살펴보자.

Git-Flow

Git-Flow는 Vincent Driessen이 제안한 브랜칭 모델로, 복잡한 프로젝트 관리에 적합하다. Git-Flow는 주로 대규모 프로젝트나 긴 개발 주기를 가진 프로젝트에서 사용된다. Git-Flow의 핵심 개념은 명확한 브랜칭 구조와 역할 분담을 통해 개발, 테스트, 배포 과정을 체계적으로 관리하는 것이다.

주요 브랜치

  1. master: 항상 배포 가능한 상태를 유지한다. 최종 제품이 이 브랜치에 저장된다.
  2. develop: 최신 개발 상태를 반영하며, 모든 기능이 통합되고 테스트된다. 이 브랜치에서 다음 배포 버전이 만들어진다.
  3. feature: 새로운 기능을 개발하는 브랜치이다. develop 브랜치로부터 분기하며, 개발 완료 후 develop 브랜치에 병합된다.
  4. release: 배포 준비를 위한 브랜치이다. 버그 수정과 최종 테스트를 진행하며, 완료되면 master 브랜치와 develop 브랜치에 병합된다.
  5. hotfix: 긴급 수정이 필요한 경우 사용하는 브랜치이다. master 브랜치로부터 분기하며, 수정 완료 후 masterdevelop 브랜치에 병합된다.

Git-Flow 사용 방법

  1. 설치
brew install git-flow
  1. 초기화
git flow init
  1. 새로운 기능 브랜치 시작
git flow feature start feature-name
  1. 기능 개발 완료 후 병합
git flow feature finish feature-name
  1. 릴리즈 브랜치 시작
git flow release start release-version
  1. 릴리즈 완료 후 병합
git flow release finish release-version
  1. 핫픽스 브랜치 시작
git flow hotfix start hotfix-description
  1. 핫픽스 완료 후 병합
git flow hotfix finish hotfix-description

GitHub-Flow

GitHub-Flow는 GitHub에서 제안한 간단하고 직관적인 브랜칭 모델로, 빠른 배포 주기를 가진 프로젝트나 소규모 팀에서 주로 사용된다. GitHub-Flow는 단순성과 빠른 피드백을 중시하며, 지속적 통합(CI)과 배포(CD)를 쉽게 적용할 수 있도록 설계되었다.

GitHub-Flow의 원칙

  1. main 브랜치: 항상 배포 가능한 상태를 유지한다.
  2. feature 브랜치: 새로운 기능이나 버그 수정을 위한 브랜치로, main 브랜치로부터 분기한다.
  3. 풀 리퀘스트: 기능 개발이 완료되면 풀 리퀘스트를 통해 코드 리뷰를 요청하고, 검토 후 main 브랜치에 병합한다.
  4. 병합 후 배포: main 브랜치에 코드가 병합되면 자동으로 배포가 이루어진다.

GitHub-Flow 사용 방법

  1. 새로운 기능 브랜치 시작
git checkout -b feature-name
  1. 기능 개발 완료 후 커밋 및 푸시
git add .
git commit -m "Add feature-name"
git push origin feature-name
  1. 풀 리퀘스트 생성

    • GitHub 웹사이트에서 feature-name 브랜치에 대한 풀 리퀘스트를 생성하고 코드 리뷰를 요청한다.
  2. 코드 리뷰 및 병합

    • 코드 리뷰가 완료되면, 풀 리퀘스트를 승인하고 main 브랜치에 병합한다.
  3. 배포

    • main 브랜치에 코드가 병합되면, 자동으로 배포가 이루어진다(CI/CD 도구와 연동된 경우).

Git-Flow와 GitHub-Flow 비교

특징Git-FlowGitHub-Flow
브랜치 구조복잡한 브랜치 구조 (master, develop, feature, release, hotfix)단순한 브랜치 구조 (main, feature)
사용 시기대규모 프로젝트, 긴 개발 주기소규모 프로젝트, 빠른 배포 주기
배포주기적인 배포 (릴리즈 브랜치)지속적 배포 (main 브랜치 병합 시 자동 배포)
코드 리뷰일반적으로 코드 리뷰 프로세스 포함풀 리퀘스트를 통한 코드 리뷰
CI/CD 연동복잡한 설정이 필요할 수 있음간단한 설정으로 CI/CD 연동 가능

결론

Git-Flow와 GitHub-Flow는 각각의 장단점을 가지고 있으며, 프로젝트의 성격, 팀의 규모, 배포 주기 등에 따라 적절한 워크플로우를 선택하는 것이 중요하다. 대규모 프로젝트에서는 체계적인 관리가 가능한 Git-Flow가 적합하고, 빠른 배포와 간단한 관리가 필요한 프로젝트에서는 GitHub-Flow가 더 효율적일 수 있다. 각 워크플로우의 특성을 이해하고 적절히 활용하여 효과적인 버전 관리를 할 수 있도록 하자.

profile
Get your hands dirty

2개의 댓글

comment-user-thumbnail
2024년 7월 12일

다람쥐가 귀엽네요..

1개의 답글