私たちはエンベデッドプロジェクトに取り組んでいます。 現在、私たちはコントローラーAで動作するハードウェアを持っています。 その後、最終製品にコントローラーBで新しいハードウェアが追加されます。 現在、コントローラーAで古いハードウェアを使用してブランチ1にビジネスロジックを実装しています。 同僚はブランチ2のコントローラBのソフトウェアを移植しています。彼らは低レベルのもの、デバイスドライバ、HALなどをすべて適応しています。git:選択したファイルのみをマージする
すぐに我々は、ファイルの小さな部分をマージしたいだけだろう、2
しかしブランチにブランチ1をマージする必要があります。 デバイスドライバをマージしようとするのは無意味です。コントローラBでは、デバイスドライバとHALがまったく異なるものになります。 また、ボード依存の構成ファイルをマージすることも意味がありません。
しかし、ブランチ2で "git merge 1"を実行すると、gitはすべてのファイルをマージしようとするため、多くのマージ競合が発生します。 私はマージしたいファイルのセットを選ぶ方法が必要です。
私の解決方法は、「git merge」機能を使用しないことです。 代わりにブランチ1とブランチ2の2つのローカルリポジトリを作成します。 次に、いくつかのランダムなdifftoolを使用して、いくつかのファイルを手動でマージすることができます。 しかし、このソリューションでgitは私がマージしたことを知らないでしょう。 また、ブランチツリービューは私の "マージ"を反映しません。
私は何をしたいのですか?
2つのブランチをチェックアウトして、ブランチBに必要なファイルをコピーしてそこにあるファイルを上書きしてコミットできないのはなぜですか?確かに、どのファイルを扱っているのかを知る必要があります。 – Lundin
できますが、この「マージ」はgitのビジュアルツリービューには反映されません。 git-point-of-viewから、これはマージではなく通常のコミットです。 – lugge86
問題はありません。枝を閉じて、それがもはや維持されていないと言うだけです。 「リビジョンツリーの視覚的な魅力」は無関係です。 – Lundin