Git Workflow

업데이트:

Git Flow

gitflow

특징

  • 브랜치 전략에 있어서 다른 워크플로우보다 엄격하다.
  • 계획적인 릴리즈를 스케줄링 하는 대규모 프로젝트에 적합하다.
  • 대다수의 소프트웨어 개발 프로젝트에는 불필요한 절차를 준수하게 하여, 생산성을 떨어뜨린다는 비판이 있다.

    Branch

    Master

  • 릴리즈 할 때 사용하는 최종 단계의 메인 브랜치이다.
  • 릴리즈 기록을 담고 있다.
  • 태그를 통해 Versioning을 하게 된다.

    Develop

  • 다음 릴리즈 버전 개발을 진행하는 브랜치이다.
  • 기능의 구현이 필요하면 Develop 브랜치에서 다시 브랜치를 내어 개발을 진행한다.
  • 개발이 완료된 기능은 다시 Develop 브랜치로 병합된다.

    Feature

  • 기능 구현을 이유로 브랜치를 낼 때 사용하는 브랜치이다.
  • 브랜치를 내는 기준은 한 기능 단위가 된다.

    Release

  • 현재 코드가 Master 브랜치로 병합될 수 있는지 테스트를 하고 테스트 과정에서 발생한 버그를 고치는 역할을 담당하는 브랜치이다.

    Hotfix

  • 검수를 진행했음에도 릴리즈된 Master 브랜치에서 버그가 발생한 경우 사용하는 브랜치이다.
  • 버그를 수정한 이후 Master 브랜치와 Develop 브랜치에 병합해주고 브랜치를 닫는다.

GitHub Flow

githubflow

특징

  • Master 브랜치가 릴리즈에 있어서 절대적인 역할을 한다.
  • Master 브랜치는 항상 최신 버전을 유지하며 Stable 한 상태를 담보한다.
  • Develop 브랜치가 존재하지 않고 Feature 브랜치는 Master 브랜치에서 생성되며, 병합된다.
  • 병합을 할 때는 무조건 Pull Request를 하여 코드에 대한 검토를 받도록 한다.
  • Github flow는 CI가 필수적이다.

GitLab Flow

gitlabflow

특징

  • 너무 단순해진 Github flow에 보완하는 내용을 가미하여 제안된 방식이다.
  • Production 브랜치는 Git flow의 Master 브랜치 역할과 같다.
  • Gitlab flow의 Master 브랜치는 Production 브랜치로 병합한다.
  • Production 브랜치에서 릴리즈된 코드가 항상 프로젝트 최신버전 상태를 유지해야 할 필요가 없다는 이점이 있다.

댓글남기기