同様のことをする必要がありましたが、基本的に1つのサブプロジェクトをリポジトリから別のサブプロジェクトに移動したかったのです。代わりに、任意のソースからオブジェクトをフェッチできるため、fetchを使用しました。
したがって、基本的には、新しいブランチを作成し、そのブランチ内の不要なものを削除してから、gitfetchを使用してブランチをあるリポジトリから別のリポジトリにプルしました。オブジェクトを取得したら、mergeでうまくいきました。
例えば
元のものがあるリポジトリ:
git checkout -b temp master
git rm -r Unneeded_stuff
git commit -m 'pruning'
次に、そのブランチを1つのリポジトリから完全に別のリポジトリ(無関係)にフェッチできます。
cd /path/to/other/repository
git fetch /path/to/source/repo temp:temp
ここで、temp:tempは、「ソースでtempをフェッチし、ここにtempとして保存する」ことを意味します。そこから、結果をマスターにマージできます。
git merge temp
次に、一時ブランチを削除できます。これは、最初のケースでは元のリポジトリとマージしたいものではなく、2番目のケースではマージしたためです。
これらの手順は少し圧縮できると思いますが、このセットは素晴らしく明確に見えます。