0

シナリオ:

master
|
\
  dev
  |
  \
    feature1
    |
    |
    |
   /
  |
  /  
tagV1
  |
  \
    feature2
    |
    |
   /
  |
 /
tagV2
  |
  \
    fixForV1
    |
    |
   /
  |
  /  
tagV1_1

説明:

  1. レポを作成する
  2. ブランチ dev の作成とチェックアウト
  3. ブランチ feature1 を作成してチェックアウトする .. 機能を実装する
  4. dev をチェックアウトして feature1 をマージし、feature1 を削除します
  5. マスター マージ dev のチェックアウト
  6. tagV1作成(お客様に納品)
  7. チェックアウト開発者
  8. ブランチ feature2 の作成とチェックアウト .. 機能の実装
  9. dev をチェックアウトして feature2 をマージし、feature2 を削除します
  10. マスター マージ dev のチェックアウト
  11. tagV2 の作成 (同じまたは別の顧客に配信されます)
  12. チェックアウト開発者
  13. ブランチ fixForV1 を作成してチェックアウトします .. 修正を実装します
  14. dev をチェックアウトして fixForV1 をマージします
  15. ???

15… tagV1 と fixForV1 で行われたコミットをマージする必要があります (feature2 で行われたコミットを含めずに)。マージ後、新しいタグ tagV1_1 を作成し、これを顧客に配信します。

チェリーピック {fixForV1 で作成された最初のコミットのハッシュ} ^..{fixForV1 で作成された最後のコミットのハッシュ} を実行することでこれを達成できることを知っています。これを行うためのより良い方法はありますか?

4

1 に答える 1

1

あなたの要件を正しく理解していれば、次のように作業することもできます。

  1. git checkout fixForV1
  2. git format-patch tagV2-- tagV2 から fixForV1 の先頭までのすべてのパッチを取得します。
  3. git checkout -b branchV1 tagV1 -- tagV1 に基づいて新しいブランチを作成します
  4. git apply *.patch-- ステップ 1 で生成したパッチを適用します。

運が良ければ、すべてのパッチが問題なく適用されれば完了です。運が悪かった場合は、パッチを 1 つずつ順番に適用し、それに応じて競合を修正してください。

于 2015-04-24T12:55:42.097 に答える