Potrzebowałem zrobić coś podobnego, ale chciałem zasadniczo przenieść jeden podprojekt z repo na inny. Zamiast tego użyłem funkcji pobierania, ponieważ może ona pobierać obiekty z dowolnego źródła.
Więc, w zasadzie, stworzyłem nową gałąź, usunąłem niepotrzebne rzeczy z tej gałęzi, a następnie użyłem pobierania git, aby wyciągnąć gałąź z jednego repo na drugie. Kiedy już miałem obiekty, scalenie zrobiło lewę.
E.g.
w repozytorium, który ma oryginalne rzeczy:
git checkout -b temp master
git rm -r Unneeded_stuff
git commit -m 'pruning'
Następnie można pobierał tę gałąź z jednego repozytorium w zupełnie inną (niezwiązanej):
cd /path/to/other/repository
git fetch /path/to/source/repo temp:temp
gdzie temp: środki tymczasowe "pobierz temperaturę na źródle i zapisz ją jako temp". Stamtąd możesz połączyć wynik z mistrzem.
git merge temp
można następnie usunąć gałęzie tymczasowe, ponieważ w pierwszym przypadku to nie jest coś, czego nigdy nie chce się połączyć z oryginalnym repo, aw drugim przypadku połączyły go.
Jestem pewien, że te kroki mogą być nieco skompresowane, ale ten zestaw wydaje się ładny i przejrzysty.
Należy pamiętać, że jest to duplikat http://stackoverflow.com/questions/359424/detach-subdirectory-into-separate-git-repository (jak mówi Jim DeLaHunt w swojej odpowiedzi). –