私は現在、gitを使用してプロジェクトに取り組んでいます。基本的に、私の git ツリーは 3 つのブランチで構成されています。
- ブランチA : 私の作品が派生する元のブランチ。
- ブランチB : Aに基づくブランチ。Bには開発作業 ( Aの新機能) が含まれています。
- 分岐C : 時間管理上の理由から、新機能の不完全な実験的オプションの開発も開始しました。この実験的なコードはBに直接追加されました。したがって、 CはBのクリーンアップ ブランチであり、完全に機能するコードのみを保持します。
分岐関係は次のように表すことができます。
A ヘッド-> B ->コミット 0 -> ... ->コミット n -> C ->クリーンアップ コミット
ブランチBには、すべての新機能のコードが含まれており、まだ開発中のオプションのセグメントが混在している場合があります。Cでのすべてのコミットは、実験的な部分の削除です。
ブランチCのコードはクリーンで、そこからパッチを作成したいと考えています。パッチには、Cの最後のコミットからAのヘッドまでのすべての変更が含まれている必要があります。
実行git format-patch master --stdout > my_patch.patch
すると、運用コードで効果的に終了するパッチが生成されます。しかし、パッチでは、実験的なコードが追加され ( Bでいくつかのコミットを介して)、削除されます ( Cでコミットをクリーンアップする)ため、これは問題ありません。まったくスマートではないことに加えて、これには無駄な余分なスペース (コミュニティとパッチを共有するための余分なメールを意味します) とアプリケーションでの余分なオーバーヘッドも含まれます。
クリーンなパッチを作成するには、これらのブランチをどのように操作すればよいですか? これまでに行った実験的な作業をブランチBに保存したいことに注意してください。パッチに含めたくないだけです。