11

分岐モデルには、Vincent Driessen による成功した Git 分岐モデルを使用しています。すべて問題ありませんが、特定の問題が持ち上がったことは実際には見られませんでした。

私が理解したことから、新しい機能が必要な場合は、 のブランチをdevelopment作成して、新しいfeatureブランチを作成します。これに取り組み、完了したら、このブランチをブランチにマージしますdevelopment

開発者が機能を作成し、その機能を にマージしてdevelopment、機能コードにいくつかのバグがあることが判明した場合はどうなるでしょうか。これはどこで修正する必要がありますか? 開発から新しいfix/bugfixブランチを開始し、そこでコードを修正する必要がありますか? 別の方法が見えません。

これについてどうすればいいですか?

ありがとう

4

4 に答える 4

12

モデルは単なるモデルであることを忘れないでください。一連のルールにやみくもに従うのではなく、より効率的な構造を提供することです。つまり、すべての状況で機能するとは限らないため、自由に微調整して、自分の状況で何が機能するかを理解する必要があります。

この状況では、次の選択肢があると思います。

  1. マージをロールバックし、準備が整うまで機能ブランチの作業を続行します
  2. バグを修正するために新しいブランチを開始します。

どちらを選択するかは、次のような要因によって異なります。

  • あなたの顧客はバグを見ることができますか? バグフィックスまたはホットフィックス ブランチを作成します。
  • バグは本当に悪く、開発ブランチの他の進行を止めますか? 変更をロールバックします。
  • 外部への影響が最小限のマイナーな問題ですか? フィーチャー ブランチでの作業を続行し、準備ができたら再度マージします。

機能ブランチとバグ修正ブランチの違いは、Git の観点からは重要ではありません。これらのラベルを内部文書またはその他の監査目的 (たとえば、外部ユーザーに表示されるものを追跡するため) に使用する場合にのみ問題になります。

バグ修正が非常に迅速に行われると考えていても、開発ブランチから直接作業する誘惑に抵抗してください。見た目ほど単純なことはありません。何か問題が発生した場合、後で頭痛の種になります。

選択内容の大まかな視覚的表現:

選択肢のステートマシン図

于 2011-08-30T06:33:34.600 に答える
5

バグを導入したコミットを見つけて、そこに根ざした新しいブランチを作成するのはどうですか? このアプローチでは:

  • リベース操作によって壊れた参照が作成されるリスクはありません
  • 開発ブランチ、機能ブランチ、および影響を受ける可能性のあるその他のブランチの祖先から、バグ修正ブランチが完了したらどこにマージする必要があるかがわかります。これは、バグが導入されてから「機能」が「開発」と何度か統合された場合でも当てはまります。
  • バグを導入したコミットを特定し、そこからルート化すると、開発者はリポジトリのレイアウトに慣れていなくても、バグ修正ブランチをマージする必要がある場所を知ることができます。
  • 関係のない後続の変更を取り込むことを恐れずにマージできるブランチが作成されます。たとえば、バグが導入された直後に分岐した「feature」のサブブランチである「feature-beta」に取り組んでいる人がいるとします。彼らは、「機能」で発生した他のすべてのものを引き込むことを心配することなく、バグ修正ブランチを簡単に引き込むことができます。
  • このアプローチは、チェリー ピックの必要性を減らします。これには、コミットの名前が変更されるという欠点があります (したがって、すべてに明確な名前を適用するという git の大きな利点の 1 つが損なわれます)。
于 2012-05-17T22:14:35.137 に答える
1

そのフィーチャー ブランチがパブリック ブランチである場合 (つまり、複製された/他のユーザーが使用するリモート リポジトリにプッシュされた場合)、新しいブランチを作成し、上記の修正ブランチでデバッグを分離することをお勧めします。(' ' ブランチの上に
' ' ブランチをリベースしようとする代わりに)。featuredevelop

途中のデバッグ コミットをブランチに直接記録するのではなく、ブランチ マージdevelopによって最初に導入されたバグを修正する結果のコミットのみを記録するという考えが残っています。feature

于 2011-08-30T05:56:32.397 に答える
0

ブランチを作成して(または古いマージされたfeatureブランチを使用して)、そこで修正するだけです。

古いブランチの使用/新しいブランチの作成はまったく同じです---マージ後にどちらがどちらであるかを指定することはできません。

于 2011-08-30T06:08:28.350 に答える