Mi piacerebbe creare un nuovo ramo nel mio repository che includa solo i file da una specifica directory nel master e la sua cronologia quindi premere quel ramo di un nuovo repository.Git crea un nuovo ramo con solo una directory specificata e la sua cronologia quindi spinge al nuovo repository
... o qualcosa di equivalente: ad esempio, è possibile trasferire una directory in un nuovo repository in un nuovo repository senza creare un ramo.
Finora penso che quanto segue funzionerà, ma mi chiedo se c'è un modo più semplificato.
1 - Creazione di un ramo vuoto:
git symbolic-ref HEAD refs/heads/<new-branch>
rm .git/index
git clean -fdx
2 - Acquista una directory da maestro:
git checkout master <paths> ...
git add <paths> ...
git commit
3 - ramo Push to nuovo telecomando:
git push -u <remote-URL> <new-branch>
4 - Quindi, nel nuovo repository, unire il ramo con il master:
git checkout -t origin/<new-branch>
git checkout master
git merge <new-branch>
git branch -d afterimage
git branch -d -r afterimage
Sto tentando di fare qualcosa di equivalente a Detach subdirectory into separate Git repository, ma senza il pasticcio git filter-branch
.
... ma in realtà * è necessario * utilizzare 'git filter-branch' per estrarre la cronologia per la sottodirectory. Senza quello, ottieni solo i file. –
Davvero non vedo l'interesse di non seguire post il tuo link. Farlo nel modo in cui proponi funziona, ma è una forza bruta, e non pulirà i tuoi dati storici o di deposito. – CharlesB