2011-12-09 4 views
5

Eventuali duplicati:
How to move files from one git repo to another (not a clone), preserving historyspostare i file tra i pronti contro termine Git mantenendo la cronologia

Ho seguito i punti a

How to move files from one git repo to another (not a clone), preserving history

e ho avuto i file spostati finita, ma ha portato tutta la storia del repository con esso!

C'è un modo per fare la stessa cosa ma solo portare la cronologia dei file associati piuttosto che l'intera cronologia del repository?

Edit:

essere più espliciti su quello che sto cercando di fare, assumere ci sono 10 file in un repository e ognuno ha 1 commit ad esso associati (quindi 10 impegna totali nel registro).

Ho un nuovo repository su cui voglio trasferire alcuni file, diciamo 2 di essi. Voglio portare i file con la cronologia solo da quei file, quindi mi aspetterei 2 commit dal repository originale nel log del nuovo repository. Il metodo sopra utilizzato riporta tutti e 10 i commit, anche se sono venuti solo 2 file.

+0

Possibile dup di http://stackoverflow.com/questions/1365541/how-to-move-files-from-one-git-repo-to-another-not-a-clone-preserving-history –

+3

Non è un duplicato - Ho usato quel metodo ma riporta l'intera cronologia dell'intero repository, non solo la cronologia dei file che ho importato. – tpg2114

+1

non è un duplicato e ho lo stesso problema –

risposta

0

Hai provato Subtree Merging?

sottostruttura Unire L'idea della fusione sottostruttura è che si hanno due progetti, e uno dei progetti mappe in una sottodirectory dell'altro e viceversa. Quando si specifica un'unione di sottostrutture, Git è spesso abbastanza intelligente da capire che uno è un sottoalbero dell'altro e si fonde in modo appropriato.

Vedremo un esempio di aggiunta di un progetto separato in un progetto esistente e quindi di unire il codice del secondo in una sottodirectory del primo.

+1

Questo non sembra conservare la cronologia dei file importati. La colpa di Git mostra tutti i file uniti come modificati da me, piuttosto che dall'autore originale. E il log git non mostra nessuno dei commit relativi ai file portati. – tpg2114

+0

quel collegamento è già morto. Fino ad oggi è http://git-scm.com/book/ch6-7.html – sukhmel

-4

Se la cronologia è un solo commit, perché non impegnare quel file nel nuovo repository? Non c'è storia a questo punto.

+2

Questo è stato solo un esempio per chiarire il punto. Sto cercando di portare oltre 2 file da un repo con oltre 1000 file e 3 anni di storia. Ecco perché sto cercando di evitare di portare tutta la storia del repository originale, voglio solo la cronologia dei file che ho portato. – tpg2114

+0

Quindi basta un ramo per ogni ramo attivo nel nuovo repository e commetti ciò che esiste in quel momento. Crea un commit di root comune a tutti i rami che desideri. –