2014-04-26 14 views
6

Dire che ho il mio repository git con un mucchio di file di testo. C'è un altro repository git diverso che qualcun altro possiede con un gruppo di file di testo che sono tutti diversi dal mio tranne per un file.Git unisci un singolo file da un altro repository nel mio

Sto apportando continuamente modifiche ai diversi file di testo nel mio repository, ma ogni tanto voglio unire qualsiasi modifica di quel singolo file dall'altra repository al mio.

C'è un modo semplice per farlo? Ho cercato in giro e ho trovato alcune domande simili, ma nessuna che siamo per il mio scenario esatto.

+0

Se non stai cambiando quel file tu stesso, basta copiarlo e commetterlo. –

+0

Sto cambiando il file con cui voglio unire. – btse

+0

Bene, a seconda della frequenza con cui viene modificato su entrambi i lati, potrebbe essere ancora più semplice copiarlo e risolvere eventuali conflitti. Se fosse una directory/libreria ti suggerirei di averla come sottomodulo, ma per un file ... comunque, la cosa giusta da fare, quando puoi aiutarla, è per tutti coloro che collaborano su un file per lavorare su biforcazioni di lo stesso repository. Non c'è modo di prendere semplicemente la cronologia scollegata di un file in Git per fonderlo in un repository AFAIK completamente diverso. –

risposta

5

tenta di aggiungere il other-repo poi portare i suoi rami compreso il vostro target-branch

~ $ git remote add other [email protected]:username/other-repo.git 
~ $ git fetch other 

Passare al ramo che si desidera unire nel target-file.ext:

~ $ git checkout your-branch 

unire il file di destinazione in yours:

~ $ git checkout -p other/target-branch target-file.ext 
+0

questo non ha funzionato per me .... restituisce solo un "Nessun cambiamento". messaggio –

+0

@TimBoland prova https://stackoverflow.com/a/4427783/6263936 – Liang

1

È possibile unire un arbitro file ary o oggetti pronti contro termine. Più semplice potrebbe essere:

git merge-file file.txt <(git show last-merged-file.txt) /path/to/their/file.txt 
# resolve any conflicts, then 
git tag last-merged-file.txt `git hash-object-w file.txt` 
0

Se si utilizza qualsiasi tipo di imballaggio (manufatti) si traduce in pronti contro termine originale, allora si può chiedere al proprietario del pronti contro termine di pubblicare le fonti. Poi, nel tuo repository, consumi e spacchetti questi artefatti e copia il file che ti serve. Per esempio. Se usi Java-Maven, assicurati che la build sul repository originale pubblichi anche i sorgenti, poi nel tuo repository, metti un pre-passo (prima della compilazione) in cui scarichi la dipendenza delle fonti, spacchetta il file jar e copia il uno che ti serve nella tua directory corretta. Ci sono plugin Maven per questo

Problemi correlati