web-dev-qa-db-ja.com

git-flow対github-flowの長所と短所は何ですか?

最近、GitLabの使用を開始しました。

現在、「集中型」ワークフローを使用しています。

Github-flowへの移行を検討していますが、確認したいと思います。

git-flow vs github-flow の長所と短所は何ですか?

111
Paul McKenzie

GitMinutesエピソード17で説明したように、 Nicholas Zakas による「 GitHub社内のワークフロー 」に関する記事:

Git-flow は、Vincent Driessenによって作成されたGitの変更を管理するためのプロセスであり、そのフローを管理するためのいくつかの Git拡張 を伴います。
git-flowの背後にある一般的な考え方は、それぞれが異なる目的のために常に存在するいくつかの別個のブランチを持つことです:masterdevelopfeaturerelease、およびhotfix
機能またはバグの開発プロセスは、最終的にリリースされる前に、あるブランチから別のブランチに流れます。

一部の回答者は、git-flowを一般的に使用していると回答しました。
一部はgit-flowで始まり、そこから離れました。

離れる主な理由は、git-flowプロセスを継続的(またはほぼ連続的)な展開モデルで扱うのが難しいことです。
一般的な感じは、git-flowは、リリースが数週間に1回行われる、より伝統的なリリースモデルの製品でうまく機能するが、このプロセスは故障するということです。 1日に1回以上リリースする場合はかなり

要するに:

できるだけ単純なモデル(GitHubフローのようになりやすい)から開始し、必要に応じてより複雑なモデルに移行します。


GitHub-Flow に基づくsimpleワークフローの興味深い図を見ることができます:
"単純なgit分岐モデル"、主な要素は次のとおりです。

  1. masterは常にデプロイ可能でなければなりません。
  2. 機能ブランチを通じて行われたすべての変更(プルリクエスト+マージ)
  3. 競合を回避/解決するためにリベースします。 masterにマージします

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

116
VonC

すべてのモデルは最適ではないため、全員が従うべき特効薬のワークフローはありません。そうは言っても、以下の点に基づいてソフトウェアに適したモデルを選択できます。

本番環境の複数のバージョン- Git-flowを使用

コードに実稼働環境で複数のバージョンがある場合(つまり、オペレーティングシステム、Officeパッケージ、カスタムアプリケーションなどの典型的なソフトウェア製品)、git-flowを使用できます。主な理由は、次のバージョンの開発中に、運用環境で以前のバージョンを継続的にサポートする必要があるためです。

本番シンプルソフトウェアの単一バージョン- Github-flowを使用

コードが常に実稼働環境で1つのバージョン(つまり、Webサイト、Webサービスなど)を持っている場合、github-flowを使用できます。主な理由は、開発者にとって複雑なことをする必要がないからです。開発者が機能を終了するかバグ修正を終了すると、すぐに製品版に昇格します。

本番環境の非常に複雑なソフトウェアの単一バージョン- Gitlab-flowを使用

FacebookやGmailなどの大規模なソフトウェアでは、CI/CD>ツールが実行される前に、ブランチとマスターブランチの間に展開ブランチを導入する必要がある場合があります生産に。アイデアは、何百万人もの人々によって使用されているため、プロダクションバージョンにより多くの保護を導入することです。

70
Gayan Pathirage

私はgit-flowモデルを1年以上使用していますが、大丈夫です。

しかし、それは実際にアプリケーションの開発およびデプロイ方法に依存します。

開発/展開のフローが遅いアプリケーションがある場合にうまく機能します。

しかし、たとえば、GitHubのように、開発/展開のフローが速いアプリケーションがあり、毎日、場合によっては1日に数回展開します。この場合、git-flowは私の意見ではすべてが遅くなる傾向があり、GitHubを使用しますフロー。

考慮すべきもう1つのことは、git-flowは標準のgitではないため、可能性があります。実際に言うと、それを知らない開発者を見つけることができます。物事を台無しにするチャンス。また、上記のように、誰かがgit-flowをより簡単に使用できるように一連のスクリプトを開発したため、すべてのコマンドを覚える必要はありません。コマンドを支援しますが、実際のフローを覚えることはあなたの仕事です、開発者が修正プログラムまたは機能であるかどうかを知らなかった場合、またはフローや物事を思い出せない場合は最悪の場合に何度も遭遇しました。

MacおよびWindows用のgit-flowをサポートするGUIが少なくとも1つあります SourceTree

最近では、そのシンプルさと管理の容易さから、GitHubフローに傾倒しています。また、「頻繁に早期にデプロイする」ため...

お役に立てれば

34
Diego Antunes