最近、GitLabの使用を開始しました。
現在「集中型」ワークフローを使用しています。
github-flowへの移行を検討していますが、確認したいと思います。
git-flowとgithub-flowの長所と短所は何ですか?
最近、GitLabの使用を開始しました。
現在「集中型」ワークフローを使用しています。
github-flowへの移行を検討していますが、確認したいと思います。
git-flowとgithub-flowの長所と短所は何ですか?
回答:
GitMinutesエピソード17で説明されているように、「社内のGitHubワークフロー」に関するNicholas Zakasの記事:
Git-flowは、Vincent Driessenによって作成されたGitの変更を管理するためのプロセスであり、そのフローを管理するためのGit拡張機能がいくつか付属しています。
gitの流れの背後にある一般的な考え方は、異なる目的のために常に存在するいくつかの別々の枝、それぞれを持っている:master
、develop
、feature
、release
、とhotfix
。
機能またはバグの開発プロセスは、最終的にリリースされる前に、あるブランチから別のブランチに流れます。一部の回答者は
git-flow
、一般的に使用していると述べています。
何人かgit-flow
は最初からそれから離れました。離れる主な理由
git-flow
は、継続的(またはほぼ継続的)な展開モデルではプロセスを処理することが難しいためです。
一般的な感じはgit-flow
、リリースが数週間に1回行われる従来のリリースモデルの製品ではうまく機能しますが、このプロセスは、1日に1回以上リリースする場合はかなり壊れます。
要するに:
可能な限り単純なモデル(GitHubフローがそうであるように)から始め、必要に応じてより複雑なモデルに移動します。
あなたは興味深い実例を参照することができ、簡単な基づいてワークフロー、GitHubのフローを:で
、「シンプルgitの分岐モデルの主な要素があることで、」:
master
常に展開可能である必要があります。- 機能ブランチを通じて行われたすべての変更(プルリクエスト+マージ)
- 競合を回避/解決するためにリベースします。合併する
master
実際のより完全で堅牢なワークフローについては、gitworkflow(一言)を参照してください。
すべてのモデルが最適ではないため、全員が従うべき特効薬のワークフローはありません。そうは言っても、以下の点に基づいて、ソフトウェアに適したモデルを選択できます。
本番環境の複数のバージョン-Git-flowを使用
コードが複数のバージョンを運用している場合(オペレーティングシステム、Officeパッケージ、カスタムアプリケーションなどの一般的なソフトウェア製品など)、git-flowを使用できます。主な理由は、次のバージョンを開発しながら、本番環境で以前のバージョンを継続的にサポートする必要があるためです。
プロダクションシンプルソフトウェアの単一バージョン-Github-flowを使用
コードのバージョンが常に1つしかない場合(つまり、Webサイト、Webサービスなど)、github-flowを使用できます。主な理由は、開発者が複雑なことをする必要がないためです。開発者が機能を完了するか、バグ修正を完了すると、すぐに製品版にプロモートされます。
単一バージョンの本番環境ですが、非常に複雑なソフトウェアです-Gitlab-flowを使用してください
FacebookやGmailのような大規模なソフトウェアの場合、CI / CD>ツールが稼働する前に、ブランチとマスターブランチの間にデプロイメントブランチを導入 してから、本番環境に移行する必要があります。アイデアは、何百万もの人々によって使用されているので、製品版により多くの保護を導入することです。
私はgit-flowモデルを1年以上使用してきましたが、問題ありません。
しかし、それは本当にあなたのアプリケーションがどのように開発され、デプロイされるかによります。
開発/展開フローが遅いアプリケーションがある場合にうまく機能します。
しかし、たとえば、GitHubのように、開発/デプロイフローが速いアプリケーションがあります。毎日デプロイし、時には1日に数回デプロイします。この場合、git-flowは私の意見ではすべてを遅くする傾向があるため、GitHubを使用していますフロー。
もう1つ検討する必要があるのは、git-flowは標準のgitではないためです。つまり、そうかもしれませんが、実際には、それを知らない開発者が見つかる可能性があります。その後、学習曲線があります。物事を台無しにするチャンス。また、上記のように、誰かがgit-flowをより簡単に使用できるように一連のスクリプトを開発したため、すべてのコマンドを覚えておく必要はありません。コマンドを手助けしてくれますが、実際のフローを覚えておくことはあなたの仕事です、開発者がホットフィックスなのか機能なのかわからなかったときや、フローを覚えたり、物事を詰め込んだりできなかったりすると、最悪の場合でも何度か遭遇しました。
MacおよびWindows SourceTreeの git-flowをサポートするGUIが少なくとも1つあります。
最近では、GitHubフローのシンプルさと管理のしやすさから、GitHubフローに傾いています。また、「早期に頻繁にデプロイする」ために...
お役に立てれば
git flow release...
、アプリケーションをデプロイするためにgithubアクションと組み合わせて使用することです。私の最初の応答では、1日に複数回リリースしたため、git-flowを使用するときに問題が発生すると述べました。このプロジェクトでgit-flowがうまく機能すると思うのは、事前定義されたリリースサイクルがあるためです。これは、git-flowを使用する主なセールスポイントの1つです。