Мне нужно было сделать нечто подобное, но я хотел по сути переместить один подпроект из репо в другой.Вместо этого я использовал выборку, поскольку она может извлекать объекты из любого источника.
Итак, в основном я создал новую ветку, удалил ненужные вещи в этой ветви, а затем использовал git fetch, чтобы извлечь ветку.из одного репо в другой.Как только у меня были объекты, слияние сделало трюк.
Например,
В хранилище, в котором есть исходный материал:
git checkout -b temp master
git rm -r Unneeded_stuff
git commit -m 'pruning'
Затем вы можете получить эту ветку из одногорепозиторий в совершенно другой (не связанный):
cd /path/to/other/repository
git fetch /path/to/source/repo temp:temp
где temp: temp означает «извлечь temp из источника и сохранить его как temp здесь».Оттуда вы можете объединить результат с вашим мастером.
git merge temp
Затем вы можете удалить временные ветви, поскольку в первом случае вы никогда не захотите объединить их с исходным репо, и вво втором случае вы его слили.
Я уверен, что эти шаги могут быть немного сжаты, но этот набор кажется красивым и понятным.