「feature1」は「feature2」の基礎となる 2 つの機能に同時に取り組んでいます。私はそれらのために 2 つのブランチを作成します。feature1 に取り組むときは、「feature1」ブランチにコミットします。feature2 に取り組むときは、「feature2」ブランチにコミットし、定期的に「feature1」の上に「feature2」をリベースします。
git checkout feature2
git rebase feature1
... work ...
git commit ...
だから、ある瞬間、私はこの構造を持っています:
feature1: A -> B -> C
feature2: A -> B -> C -> P -> Q -> R
この時点で、機能 1 は完了です。A、B、および C を単一のコミット D に押しつぶし、この新しい状態の feature1 に基づいて feature2 をリベースします。
feature1: D
feature2: D -> P' -> Q' -> R'
単純なことですが、feature1 でインタラクティブなリベースを実行し、A、B、および C を D にうまく押しつぶして、feature2 のリベースを試みます。
git checkout feature2
git rebase feature1
ここで、git は D を feature2 ブランチにプルし、その上に A、B、C、P、Q、および R を再適用しようとします。もちろん、A、B、C の更新は D によって既に適用されているため、マージの競合が発生します。
A、B、および C が再適用されているときにマージの競合が報告された場合、実行する必要があることを試行錯誤して考えました
git rebase --skip
そして、まさに必要な結果が得られます。しかし、第一に、あなたがまだ知らなければ、これは明らかではありません。第二に、潜在的な真のマージ競合を簡単に見落としてスキップしてしまいます。後者の可能性は低いはずですが、そうなった場合、対応する更新が完全に失われるため、かなり悪いことです。
それで、私の質問は次のとおりです。いくつかのコミットが最近1つに押しつぶされたブランチにブランチをリベースするより良い方法はありますか?