私はブランチ B にいます。一連のコミットの後、いくつかのファイルはブランチ A で準備ができている/必要ですが、多くは準備ができていない/必要ではありません。適切な git 履歴を保持しながら、それらのファイルだけをマージしたいと考えています。後で実際にマージするとき、これらの変更の起源について誤解を招くような痕跡は望んでいません。それらのコミットの一部であった他のファイルの変更がマージされなかったとしても、元のコミットを適切に参照する必要があります (まだ)。これは、コミットを、これらのファイルに関係するものと関係しないものに分割することを意味すると思います。
これに対して提案されたすべてのソリューションは、これらの変更の履歴を失い、後で B を A にマージしたいときに B の変更の一部が既に存在する場合に大きな問題を引き起こします。これを回避するソリューションが必要です。
Tortoise では、1 つのファイルのログを見て、元に戻す古いリビジョンを選択できます。したがって、原則として、B から新しいブランチ C を作成し、マージしたくないすべてのファイルを、B が A から分岐した時点に戻すことができます。その後、C を A にマージできます。 Git の履歴を追跡し、B の変更が既に存在することに驚かずに B を A にマージできるようにします。
しかし、2 個のファイルをマージしたいだけなのに、手動で 20 個のファイルを識別して元に戻すのは大変です。これが一般的なワンステップ操作ではないのはなぜですか? tortoise の revert はどのように機能しますか? 単一のファイルを操作できるため、サブコミットである必要があります。これは、私が探している重要な機能です。新しいリビジョンから古いリビジョンに移行しようとしているという事実を捨てて、B を A に戻す最終的なマージと競合する手動の変更を加えたように見せかけているのでしょうか?