以下は、Gitflowワークフローに従っています。ここで、master
ブランチにはコミット履歴(git tag
)異なるリリース。
リリース管理の観点から、release
およびmaster
ブランチとマージした後、develop
ブランチを削除します。
ホットフィックスを適用するには、最初にgit checkout
master
ブランチから特定のリリースをコミットし、その特定のコミットからホットフィックスブランチを作成し(オレンジ色で表示)、変更を加えます。
質問:
1)しますgit merge
ホットフィックスブランチがmaster
ブランチの中間コミットノード(以下に示す)にマージされることを許可しますか? master
の先端にマージする代わりに、ホットフィックスは0.1
リリース
2)「いいえ」の場合、master
ブランチを介して(特定のリリースの)ホットフィックスを適用する方法は? release
ブランチが削除されたため
あなたは実際に複数の生産的なバージョンを管理する方法を求めています。 Gitflowはこれをカバーしておらず、複雑なトピックです。
サポートされているバージョンごとにブランチを持つことができます。 version/1.9.0、そして「ネストされたgitflow」を実行し、そのバージョンブランチをマスターのように扱います。これは、ポートフィックスをバック/フォワードするまで十分に機能します。
残念ながら、これまでの経験はありませんので、これ以上は役に立ちません。
文字通りの質問に答えるには:
これは不可能です。次のすべての履歴をリベースすることもできますが、それは非常に多くの不便とトラブルを引き起こし、それはオプションではありません。
Marstatoが言うように、複数のマイナー(またはメジャー)リリースをサポートするには、複数のバージョンブランチが必要です。これらのバージョンのブランチに加えて、修正ブランチがあります。マスターブランチはもうありません。
したがって、あなたの状況では、バージョン/0.1、バージョン/0.2およびバージョン/0.3ブランチがあります。そして、fix/0.1、fix/0.2およびfix/0.3ブランチ。 0.1バージョンにバグが見つかった場合、その修正をfix/0.1ブランチに適用し、その修正ブランチをversion/0.1とfix/0.2にマージします。次に、fix/0.2をversion/0.2とfix/0.3にマージします(以下同様)。最後に、最後の修正ブランチを対応するバージョンとブランチにマージし、開発ブランチにマージします。
バージョンをサポートする必要がなくなったら、バージョンを削除してそのバージョンのブランチを修正し、マージ時にスキップできます。
多くのバージョンをサポートしている場合、これは多くのオーバーヘッドをもたらすことに注意してください。修正ブランチを定期的にマージするだけでオーバーヘッドを削減できますが、テストチームがどのバージョンのどの修正プログラムがすでにマージされているかを知る必要があるという問題が生じます。
以下に、バージョン0.1および0.2の短い例を示します。