git-flow 대 github-flow의 장단점은 무엇입니까? [닫은]


125

최근 GitLab을 사용하기 시작했습니다.

현재 "중앙 집중식"워크 플로를 사용하고 있습니다.

우리는 github-flow로 이동을 고려하고 있지만 확인하고 싶습니다.

git-flowgithub-flow 의 장단점은 무엇입니까 ?

답변:


133

Nicholas Zakas 가 " 회사 내부의 GitHub 워크 플로 "에 대한 기사 에서 GitMinutes 에피소드 17에서 논의한대로 :

Git-flow 는 Vincent Driessen이 만든 Git의 변경 사항을 관리하기위한 프로세스이며 해당 흐름을 관리하기위한 일부 Git 확장 과 함께 제공됩니다 .
자식 흐름 뒤에 일반적인 생각은 항상 다른 목적을 위해 각각 존재하는 몇 가지 별도의 지점을 가지고하는 것입니다 : master, develop, feature, release,와 hotfix.
기능 또는 버그 개발 프로세스는 최종적으로 출시되기 전에 한 분기에서 다른 분기로 이동합니다.

일부 응답자는 git-flow일반적으로 사용한다고 답했습니다 .
일부는 시작하여 git-flow멀어졌습니다.

이동하는 주된 이유는 git-flow프로세스가 연속 (또는 거의 연속) 배포 모델에서 처리하기 어렵 기 때문입니다.
일반적인 느낌은 git-flow릴리스가 몇 주에 한 번 수행되는보다 전통적인 릴리스 모델의 제품에 적합하지만 하루에 한 번 이상 릴리스 할 때이 프로세스가 상당히 중단된다는 것 입니다.

요컨대 :

가능한 한 단순한 모델 (GitHub 흐름이있는 경향이 있음)으로 시작하고 필요한 경우 더 복잡한 모델로 이동합니다.


" A simple git branching model " 에서 GitHub-Flow 를 기반으로 한 간단한 워크 플로에 대한 흥미로운 그림을 볼 수 있으며 주요 요소는 다음과 같습니다.

  1. master 항상 배포 가능해야합니다.
  2. 기능 분기 (풀 요청 + 병합)를 통해 이루어진 모든 변경
  3. 갈등을 피 ​​/ 해결하기 위해 리베이스; 에 합치다master

https://a248.e.akamai.net/camo.github.com/9783623eba280ba5ace8b9e63842be52af2f0546/687474703a2f2f7374617469632e62656e65742e61692f736b697463682f666c6f772d32303133303932362d3139333431392e706e67


실제로 더 완벽하고 강력한 워크 플로 gitworkflow (한 단어)를 참조 하세요 .


88

모든 모델이 차선책이기 때문에 모든 사람이 따라야하는 은색 총알 워크 플로는 없습니다. 즉, 아래 사항을 기반으로 소프트웨어에 적합한 모델을 선택할 수 있습니다.

프로덕션의 여러 버전 -Git-flow 사용

코드에 여러 버전이있는 경우 (예 : 운영 체제, Office 패키지, 사용자 지정 응용 프로그램 등과 같은 일반적인 소프트웨어 제품) git-flow를 사용할 수 있습니다. 주된 이유는 다음 버전을 개발하는 동안 프로덕션에서 이전 버전을 지속적으로 지원해야하기 때문입니다.

프로덕션 단순 소프트웨어의 단일 버전 -Github-flow 사용

코드에 항상 하나의 버전 만있는 경우 (예 : 웹 사이트, 웹 서비스 등) github-flow를 사용할 수 있습니다. 주된 이유는 개발자를 위해 복잡한 작업이 필요하지 않기 때문입니다. 개발자가 기능을 완료하거나 버그 수정을 완료하면 즉시 프로덕션 버전으로 승격됩니다.

프로덕션의 단일 버전이지만 매우 복잡한 소프트웨어 -Gitlab-flow 사용

Facebook 및 Gmail과 같은 대규모 소프트웨어의 경우 프로덕션에 들어가기 전에 CI / CD> 도구를 실행할 수있는 지점과 마스터 지점간에 배포 지점 을 도입해야 할 수 있습니다 . 아이디어는 수백만 명의 사람들이 사용하기 때문에 프로덕션 버전에 더 많은 보호 기능을 도입하는 것입니다.


7
그냥 목록에 "Gitdmz 흐름"/ "힘내 DMZ 흐름"을 추가 : gist.github.com/djspiewak/9f2f91085607a4859a66
로버트 페이

1
언급 된 회사는 트렁크 기반 시스템을 사용합니다. paulhammant.com/2014/01/08/…
PatrickWalker

1
Git DMZ 흐름은 Gitflow와 더 유사하며 DMZ 분기는 개발 분기와 같습니다. 따라서 나는 그것에 대해 특별한 느낌이 없습니다.
Gayan Pathirage

2
내 이해에 따르면 Git-Flow는 다중 프로덕션 버전에서 잘 작동하지 않습니다. 핫픽스 전략에서는 프로덕션 버전이 하나만 있고 해당 릴리스 브랜치에서 핫픽스를 수행하고 나중에 다시 병합하여 브랜치를 개발한다고 가정합니다. 여러 프로덕션 브랜치에 존재하는 하나의 버그를 수정하는 방법을 제공하지 않는 것 같습니다.
Adrian Shum 2011

5
@GayanPathirage 사실 그렇지 않습니다. 1. 마스터에서 "클래식"GitFlow 태그. 핫픽스 브랜치는 최신 프로덕션 버전 (마스터에서)에 대한 수정을 수행하기위한 것입니다. 2. "릴리스 브랜치"는 Gitflow의 다른 것을 의미합니다. 실제로 프리 릴리즈 프리뷰 브랜치입니다 (개발 브랜치에서 브랜치하고 실제로 출시 될 때 마스터로 병합하는 것을 목표로 함). 3. 당신이 언급하는 것은 GitFlow에서 "support branch"라고 불리는 것입니다. (그것이 제가 GitFlow를 싫어하는 이유 중 하나입니다. 그러나 (당신이 Gitflow했던 거의 대부분에 표시되지 않도록)는 아직 실험 흐름이다
아드리안 셤

38

나는 1 년 넘게 git-flow 모델을 사용해 왔으며 괜찮습니다.

그러나 실제로는 응용 프로그램을 개발하고 배포하는 방법에 따라 다릅니다.

개발 / 배포 흐름이 느린 애플리케이션이있을 때 잘 작동합니다.

하지만 예를 들어 GitHub와 같이 개발 / 배포 흐름이 빠른 애플리케이션이 있고 매일 배포하고 때로는 하루에 여러 번 배포합니다.이 경우 git-flow는 제 생각에 모든 것을 느리게하는 경향이 있으며 저는 GitHub를 사용합니다. 흐름.

고려해야 할 또 다른 사항은 git-flow가 표준 git이 아니기 때문에 그렇게 할 수 있다는 것입니다. 그리고 제가 말할 때 실제로는 그것을 모르는 개발자를 발견하고 학습 곡선이 있습니다. 일을 엉망으로 만들 기회. 또한 위에서 언급했듯이 누군가가 git-flow를 더 쉽게 사용할 수 있도록 스크립트 세트를 개발 했으므로 모든 명령을 기억할 필요가 없으며 명령을 지원할 수 있지만 실제 흐름을 기억하는 것이 작업입니다. , 저는 개발자가 그것이 핫픽스인지 기능인지 알지 못하거나 흐름을 기억하지 못하고 문제를 해결하는 최악의 경우를 두 번 이상 보았습니다.

Mac 및 Windows SourceTree 용 git-flow를 지원하는 GUI가 하나 이상 있습니다 .

요즘에는 단순하고 관리하기 쉽기 때문에 GitHub 흐름에 더 의존하고 있습니다. 또한 "초기 배포 자주 배포"때문에 ...

도움이 되었기를 바랍니다


+1. 동의합니다.
VonC 2013 년

2
GitHub 흐름은 Git-Flow 내에 있습니다. 지속적 통합 및 지속적 배포가 필요한 경우 개발 브랜치로 가능한 한 많이 실행할 수 있습니다. 모든 기능은 개발 분기에서 분기됩니다. 복잡한 배포 모델이없는 경우 마스터 분기 또는 릴리스 분기가 필요하지 않을 수 있습니다. (예 : 귀하의 1.1 버전이 일부 클라이언트에 게시되어 있고 1.2가 다른 클라이언트에 게시되어 있고 현재 새 클라이언트를 위해 1.3을 개발 중입니다.) 세 클라이언트 모두 각각의 버전에 대한 버그 수정 및 변경 사항을 요청합니다.
Gayan Pathirage

안녕 디에고 그리고 당신의 대답에 감사드립니다. 여러 버전 유지 관리는 어떻습니까? Git Flow로 쉽게 할 수 있습니까? 지원 지점이 필요해서 어렵다고 들었습니다! 모델이 그렇게하기에 적합하다고 생각하십니까?
Luis Gouveia

1
안녕하세요 Luis, 모델을 작동시킬 수 있다고 생각하지만 다시 표준 git 워크 플로로 동일한 작업을 수행 할 수 있다고 생각합니다.
Diego Antunes 19

1
@LuisGouveia 실제로, 귀하의 질문과 위의 답변 이후 git-flow가 완벽하게 작동하는 프로젝트를 발견했으며 프로젝트에 대한 소유권이 있습니다. 아이디어는 git flow release...github 작업과 함께 사용 하여 애플리케이션을 배포하는 것입니다. 내 원래 답변에서 하루에 여러 번 릴리스했다고 언급했는데 이로 인해 git-flow를 사용할 때 문제가 발생했습니다. 이 프로젝트에서 git-flow가 잘 작동 할 것이라고 생각하는 이유는 git-flow를 사용하는 주요 판매 포인트 중 하나 인 사전 정의 된 릴리스주기가 있기 때문입니다.
Diego Antunes 19
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.