Git:2つのブランチに影響するバグの修正


16

私はGitリポジトリを成功したGit分岐モデルに基づいており、この状況になったらどうなるのかと考えていました。

ここに画像の説明を入力してください

2つの機能ブランチAとBで開発しており、BにはAからのコードが必要であるとします。Xノードは機能AにブランチBに影響するエラーを導入しますが、機能AとBがマージされたノードYでは検出されず、テストは、再び分岐して次の反復に取り組む前に実施されました。

その結果、機能Bで作業している人々がノードZでバグを見つけました。この段階で、バグ修正が必要であると判断されました。この修正は両方の機能に適用する必要があります。これは、機能の一部であるため、機能Aで作業している人々もバグを修正する必要があるためです。

バグ修正ブランチを最新の機能Aノード(ノードYから分岐するノード)から作成し、機能Aとマージする必要がありますか?その後、両方の機能が再び開発にマージされ、分岐する前にテストされますか?

この問題は、問題を解決するために両方のブランチをマージする必要があることです。フィーチャーBはフィーチャーAのコードに触れないため、修正を実装し、フィーチャーBブランチをマージせずにフィーチャーAの修正コードを保持することにより、ノードYの履歴を変更する方法はありますか?

軽度の関連:Gitバグの分岐規則


6
'develop'ブランチのバグを修正し、それを機能Aと機能Bの両方にマージすることはできませんか?
-tdammers

うーん、それがベストだと思われる。機能Aではマージの競合が発生する可能性がありますが、ここでは避けられないと思います。
アラムコチャリャン

'development'ブランチでさらに開発を行っておらず、バグ修正が 'feature A'ブランチの変更と重複していない場合、競合は発生しません。
tdammers

回答:



5

おそらく、AまたはXにバグはありません。それが見つかったブランチBのバグを修正します。修正は、通常のイベントの過程でXおよびAに伝播します。


バグ限りも可能だおかげで、機能A.には影響しません
アラムKocharyan

0

で一般的なワークフローではありませんが、gitMercurialで一般的なワークフローは、リビジョンに更新しX、そこでバグを修正し(X2として)、次にマージをやり直しますY(これはMercurialではマージのペアでした)。

実際には、このワークフローはで容易になりgit、誰もが切り替えた後以降YY2元へのREFがY失われると、それは最終的にはゴミが収集されます。ではhg、あなた手動でリポジトリを整理するために、これらのコミットを取り除く必要があっただろう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.