Avevo bisogno di fare qualcosa di simile, ma volevo essenzialmente spostare un sottoprogetto da un repository ad un altro. Quello che ho fatto invece è stato usare fetch, dato che può recuperare oggetti da qualsiasi fonte.
Quindi, in pratica, ho creato un nuovo ramo, eliminato il materiale non necessario in quel ramo, quindi ho utilizzato git fetch per estrarre il ramo da un repository all'altro. Una volta avuto gli oggetti, l'unione ha fatto il trucco.
E.g.
Sul repository che ha la roba originale:
git checkout -b temp master
git rm -r Unneeded_stuff
git commit -m 'pruning'
Quindi è possibile recuperare quel ramo da un repository in uno completamente diverso (indipendente):
cd /path/to/other/repository
git fetch /path/to/source/repo temp:temp
dove temp: mezzi temporanei "recupera temp alla fonte e salvalo come temp qui dentro". Da lì puoi unire il risultato nel tuo master.
git merge temp
è possibile eliminare i rami temporanei, in quanto nel primo caso non è qualcosa che si vuole mai a fondersi con il repo originale, e nel secondo caso l'associazione sia avvenuta.
Sono sicuro che questi passaggi potrebbero essere compressi un po ', ma questo set sembra bello e chiaro.
fonte
2011-06-28 05:46:58
Si noti che questo è un duplicato di http://stackoverflow.com/questions/359424/detach-subdirectory-into-separate-git-repository (come dice Jim DeLaHunt nella sua risposta). –