4

私の会社では、新しいストーリーをコーディングするときに次のgitワークフローを使用しています。

  1. マスターからトピックブランチを作成します(本番/安定版)
  2. 機能を実装するために必要な数のコミットを作成します。
  3. そのトピックブランチのgitmerge--squashをqaブランチに実行します。
  4. QAの人々がレビューします。
  5. 良ければ、コードはuaブランチにマージされます。User Acceptanceチームがそれを祝福すると、マスターにマージされ、最終的に展開されます。
  6. レビューに失敗した場合、開発者は修正する必要があります。基本的に、ステップ2でプロセスを再開します。

注:ポイントコードがqaブランチにマージされ、qaがそれを拒否/受け入れるまでに最大2週間かかる場合があります。

問題がなければ、コードは最終的にそれをマスターにします。ただし、QAが問題を発見し、それを修正する必要がある場合のベストプラクティスを探しています。私が望んでいるのは、可能な限り「元の状態」に見えるqaブランチになってしまうことです。

私が見ているように、ここにオプションがあります:

  1. qaブランチで元の押しつぶされたコミットを元に戻し、qaからトピックブランチをリベースし、トピックブランチでコードを修正し、qaに再度マージします。問題:厄介な復帰コミットを残します。
  2. 既存のトピックブランチを削除し、qaブランチから再作成し、問題を修正するための簡単なコミットを作成し、qaにマージして戻します。問題:機能のコード変更を、時間と場所が異なるコミット全体に分散させます。
  3. qaへの押しつぶされたマージを廃止し、個々のコミットをqaから既存のトピックブランチにリベースし、別のコミットで修正し、qaにマージします。問題:複数のコミットにより、変更がuaブランチに移動してからマスターに移動するときに、変更を追跡することが困難になります。

質問:マージされたコードを修正する必要がある場合に、単一の機能の複数のコミットを複数の長期的なブランチ(マスター->トピック-> qa-> ua->マスター)に移動するためのベストプラクティスはありますか?

4

1 に答える 1

1

経験上、qa、ua、または master にあるものを修正するために 1 つのブランチを維持するという考えはあまりうまくいきません。
' ' の後に修正するバグは、一般に、' ' または' 'qaで見つかったバグよりも簡単です (開発ライフサイクルの早い段階で発見されるため) 。uamaster

したがって、私は 2. を使用しますが、「トピック ブランチの削除」部分は使用せず、開発サイクルに沿って実行する必要がある特定の修正/進化のために「新しいトピック ブランチの作成」のみを使用します。

于 2010-09-07T21:38:18.707 に答える