2015-01-23 4 views
5

Mi piacerebbe sborsare un repo con l'intenzione di rompere i legami con il repository originale. Non ci saranno richieste di pull o future fusioni di sorta. Il nuovo repository avrà un nuovo nome di progetto. L'unica ragione per cui non copio i file sorgente e avvio un repository completamente nuovo da zero è perché mi piacerebbe conservare la cronologia dei commit. Come faccio a fare questo?Git: Come si biforca con l'intenzione di rompere i legami con il repository originale?

Chiarimento: Uso Github. Non ero in precedenza consapevole del fatto che ci fosse qualcosa di specifico per Github. Per le mie esigenze specifiche, ho un repository git che ospita due progetti separati (uno Scala, uno Java). I file per i due progetti hanno iniziato a interferire tra loro, quindi ho intenzione di imporre il repo, e nel nuovo repository eliminare tutti i file per il progetto Scala. Nel repository originale, eliminerò tutti i file per il progetto Java.

+3

git non ha idea di "rompere i legami con un repo". Se vuoi clonarlo e non fare mai richieste di pull (che tecnicamente non fanno parte di git, ma parte dei servizi di hosting come GitHub e BitBucket), allora buttati fuori. –

+1

Non sono sicuro che non ci sia il concetto di rottura delle cravatte. 'git config --remove-section remote.origin' sembra essere piuttosto vicino –

+0

Questa è una domanda su Github? – Schwern

risposta

8

Se si prevede di mantenere tutto (o quasi tutto) dal progetto originale, lo inserirò normalmente e comincio a modificarlo notevolmente.

Se si desidera solo un piccolo sottoinsieme dei file, è possibile utilizzare filter-branch per rimuovere le parti del repository non si desidera da tutta la storia. Questo passaggio cambierà ogni commit SHA e renderà impossibile estrarre o unire (almeno automaticamente) dall'originale. Per fare ciò, non è necessario .

Se si è preoccupati di una contaminazione accidentale tra progetti, è possibile utilizzare il passaggio filter-branch solo per assicurarsi che la cronologia non sia compatibile, anche se si conserva la maggior parte dei file. Se non c'è nulla da eliminare, puoi fare qualcosa di semplice come riscrivere il messaggio di commit del commit iniziale.

Se questo è un github domanda, penso che quello che avrei dovuto fare è clonare il repo sulla macchina locale, creare un nuovo progetto su GitHub (piuttosto che effettuare un fork l'originale) e poi spingere per il nuovo progetto. Github non riuscirà a capire la relazione, per quanto ne so. Ma se sei preoccupato, c'è ancora filter-branch tra il clone iniziale e il push.

Problemi correlati