アップデート2019:
最近の質問は、Gitを使用するコンテキストで見られ、分散開発ワークフロー(主にGitHubを介して共同作業)を使用して10年間が一般的なベストプラクティスを示しています。
master
はいつでも本番環境にデプロイできる状態のブランチです。次のリリースでは、選択した機能ブランチのセットがにマージされていmaster
ます。
dev
(または統合ブランチ、または ' next
')は、次のリリース用に選択された機能ブランチが一緒にテストされるブランチです
maintenance
(またはhot-fix
)ブランチは、現在のリリースの進化/バグ修正のための1つである可能性がマージにバックアップをdev
し、またはmaster
ワークフローのようなもの(あなたがマージされませんdev
にmaster
、しかし、あなたがにのみ機能ブランチをマージところdev
、その後に、選択された場合master
のGitで実装されているためには、次のリリースのための準備ができていない枝を備えています簡単に落とすことができるようにします)gitworkflowを使用したリポジトリ自体(1つの単語、ここで説明)
詳しくは、をご覧くださいrocketraman/gitworkflow
。これとトランクベースの開発の歴史は、Adam Dymitrukによるこの記事のコメントと議論に記載されています。
(ソース:Gitworkflow:タスク指向のプライマー)
注:その分散ワークフローでは、いつでもコミットして個人ブランチにWIP(Work In Progress)を問題なくプッシュできます。コミットを機能ブランチの一部にする前に、コミットを再編成(git rebase)できます。
元の回答(2008年10月、10年以上前)
それはすべて、リリース管理の逐次的な性質に依存します
まず、トランクのすべてが本当に次のリリースのためのものですか?現在開発されている機能の一部は次のとおりです。
- あまりにも複雑で、まだ洗練する必要があります
- 間に合わない
- 興味深いが、この次のリリースではない
この場合、トランクには現在の開発作業が含まれている必要がありますが、次のリリースの前に定義されたリリースブランチは、適切なコード(次のリリースで検証済み)のみがマージされ、ホモロゲーションフェーズ中に修正される統合ブランチとして機能します。そして、生産に入ると最終的に冷凍されます。
本番コードに関しては、次の点に留意しながら、パッチブランチを管理する必要もあります。
- 最初のパッチセットは、実際に最初の本番リリースの前に始まる場合があります(時間内に修正できないいくつかのバグで本番環境に入ることがわかっていますが、別のブランチでそれらのバグの作業を開始できます)
- 他のパッチブランチには、明確に定義されたプロダクションラベルから開始する贅沢があります。
devブランチに関しては、次のように並行して行う必要のある他の開発作業がない限り、1つのトランクを使用できます。
- 大規模なリファクタリング
- 他のクラスでの呼び出し方法を変更する可能性がある新しいテクニカルライブラリのテスト
- 重要なアーキテクチャの変更を組み込む必要がある新しいリリースサイクルの開始。
ここで、開発とリリースのサイクルが非常に順次的である場合、他の回答が示唆するように、1つのトランクと複数のリリースブランチに進むことができます。これは、すべての開発が次のリリースに進むことが確実で、パッチを適用できるリリースブランチの開始点として機能する小規模なプロジェクトで機能します。これは名目上のプロセスですが、より複雑なプロジェクトが発生するとすぐに...それだけでは不十分です。
Ville M.のコメントに答えるには:
- 開発ブランチは「開発者ごとに1つのブランチ」を意味するわけではないことに注意してください(各開発者が他の作業をマージして作業を表示/取得する必要があるため、「マージマッドネス」がトリガーされます)が、開発ごとに1つの開発ブランチ努力。
- これらの努力はトランクにマージバック(または定義、他の「メイン」またはリリースブランチ)する必要がある場合、これは開発者の仕事ではない I繰り返し、NOT - - SCマネージャー(解決する方法を知っているだろう競合するマージ)。プロジェクトリーダーがマージを監督する場合があります。つまり、時間どおりに開始/終了するようにします。
- 実際にマージを実行するために選択した人に関係なく、最も重要なのは次のとおりです。
- マージの結果をデプロイ/テストできるユニットテストやアセンブリ環境を用意する。
- マージが複雑すぎて解決できない場合は以前の状態に戻ることができるように、マージの開始前にタグを定義しておく必要があります。