Spesso i nostri progetti prendono vie inaspettate e tortuose. Cambiano i requisiti, o semplicemente le idee, o ancora più semplicemente i clienti hanno idee complicate.
Capita, quindi che a volte un ramo del nostro repository di progetto, assuma una forma tale da dover diventare un progetto a sé stante.
Vediamo quindi come creare un repository completamente nuovo a partire da un branch mantenendo però tutta la sua cronologia.
Creiamo il nuovo repo
Per prima cosa, creiamo un nuovo repository, in locale o sulla nostra piattaforma preferita, sia essa GitHub, BitBucket, GitLab, etc. Nel nostro esempio, lo creeremo su GitHub chiamandolo nuovo-repository. Avremo quindi un indirizzo del genere: https://github.com/accountname/nuovo-repository.git . Nel nostro esempio il ramo da “promuovere” dal repository di partenza si chiama feature/supermega.
Posizioniamoci nel ramo
A questo punto posizioniamoci in questo branch (facendo il git checkout) nella nostra copia locale del vecchio repository al quale appartiene appunto il ramo.
Pushiamo sul nuovo repository
Eseguiamo
git push https://github.com/accountname/nuovo-repository.git +feature/supermega:master
per creare il ramo master sul nuovo repository a partire dal ramo feature/supermega . Tutta la sua cronologia verrà conservata.
Questo metodo accetta parametri multipli, con il risultato che potremo mappare più di un ramo allo stesso tempo. Ecco un esempio:
https://github.com/accountname/nuovo-repository.git +feature/supermega:master +ramolocale:ramonuovo