目的: アップストリーム プロジェクトの以前のリリースにカスタム パッチを作成する必要があり、それらのパッチを新しいバージョンに適用できるようにしたいと考えています。
問題: メンテナンス ブランチから新しいバージョンにリベースすると、メンテナンス ブランチで変更されていないファイルと競合が発生します。
疑い: 私が達成しようとしていることに間違ってマージまたはリベースを適用しています。
例: これは私が達成したいことの論理的な例ですが、タグ付けされたリリース v1.0 と v2.0 の間のコミット履歴は、その間に何百ものコミットになる可能性があることを理解してください。
複数のタグ付きリリース (v1.0 および v2.0) を持つアップストリーム リポジトリをフォークし、マスター コミット履歴 A から D までを使用します。B はタグ v1.0 での最後のコミットです。C は、タグ v2.0 での最後のコミットです。D は開発中です。
$ git clone git@server:repo
A<--B(v1.0)<--C(v2.0)<--D Master
以前のリリース タグ (v1.0) から分岐して、次のようないくつかのカスタム変更を行います。
$ git checkout v1.0 -b v1.1
E<--G<--H v1.1
/
A<--B<--C<--D Master
\
F v2.1
私が今やりたいことは、後のリリース タグ (v2.0) から分岐し、v1.1 ブランチ (G' および H') で行ったパッチ コミットを v2.0 ブランチに適用することです。v1.0 で行った個々のコミットを v2.0 ログに保存する必要があります。
E<--G<--H v1.1
/
A<--B<--C<--D Master
\
F<--G'<--H' v2.1
質問: これらの変更を適用して競合を回避するための正しいワークフローは何ですか? マージとリベース (--onto を含む) の多くの組み合わせを試しましたが、すべて失敗します。git rebase は、デフォルトで 3 方向のマージを行い、無関係なファイルと競合することを望んでいます。
$ git rebase v2.1 v1.1
Falling back to patching base and 3-way merge
...
Failed to merge in the changes.
$ git checkout v2.1
$ git rebase v1.1
Falling back to patching base and 3-way merge
...
Failed to merge in the changes.