開発との違いは何ですか。機能分岐タイプ?
Gitフローのベストプラクティスに関するいくつかの記事を読みました。 gitブランチには多くのタイプがあります(例:[1]、[2]):
+ Master
+ Develop
+ Feature
+ Bug
+ Proof of concept
+ Release
+ Hotfix
タイプMaster
とRelease
の違いは何ですか?
タイプFeature
とDevelop
の違いは何ですか?
[1]に示されているgitワークフローの場合:
feature
:すべての機能/新機能/主要なリファクタリングはfeature
ブランチで行われ、それらはdevelop
ブランチから分岐してマージされます(通常、何らかのピアレビューの後)。release
:十分な機能が蓄積されるか、次のリリース期間が近づくと、新しいrelease
ブランチがofdevelop
から分岐します。これは、テスト/バグ修正および必要なクリーンアップ専用です名前、計装のさまざまなデフォルト値など)。master
QAが品質に満足すると、release
ブランチはmaster
にマージされます(また、develop
に戻ります)。これは、顧客が出荷/使用するものです。hotfix
リリース後に重大な問題が見つかった場合、修正はhotfix
ブランチで開発され、マスターから分岐します。これらは、マスターから分岐する唯一のブランチです。- 注:
master
のコミットは(release
またはhotfix
ブランチからの)マージコミットであり、顧客に出荷される新しいリリースを表します。
このモデルは主に、a)従う大きなソフトウェアプロジェクト、b)クラシックリリースのバージョン管理、c)別のQAチームを対象としていることに注意してください。 GitHubの多くの一般的なリポジトリは、より単純なモデルに従っています。
master
とrelease
の違いは、master
ブランチが顧客/ユーザーが使用しているものであるということです。実際にインストールまたは販売されたブランチです。
多くのチームでは、master
ブランチ(通常はmaster
とも呼ばれます)はrelease
ブランチでもあります。しかし、これは常にそうではありません。大企業または個別のテスト部門またはQA部門/チームを持つ企業では、マスターブランチは顧客に販売されているブランチですが、リリースブランチはテストされているブランチです。一部のプロジェクトでは、完全なテストを実行するのに1週間以上かかる場合があるため、テスターがテストできるが安定している(開発者が更新を常にプッシュしない)ブランチを用意することは理にかなっています。
feature
とdevelop
の違いは同じ理由からです。 develop
ブランチ(通常develop
またはdev
という名前)は、安定した開発者のブランチです。従来のソース管理ソフトウェアでは、開発ブランチはリポジトリサーバーです。これは、すべての開発者が共通して持つブランチです。開発を開始するブランチです。
一方、機能ブランチはあなた自身の個人ブランチです。機能/ストーリー/モジュールの開発中に、もちろんコードを大幅に変更します。 gitを活用するには、早期にコミットし、頻繁にコミットする必要があります。しかし、あなたが取り組んでいるコードは、定義上不安定(最終ではない)であり、他の開発者に重大な変更を引き起こす可能性があります。したがって、開発にコードをマージする準備ができるまで、独自のブランチで開発します(開発から分岐)。