2013-01-17 20 views
51

Ho un repository git locale che è un clone di un repository su github. Qualcuno ha biforcuto il repository e apportato modifiche in un nuovo ramo su un nuovo repository. Voglio spostare questo nuovo ramo nel mio repository (localmente per lavorarci sopra prima di unirmi al master).Git che estrae una filiale da un altro repository?

Ho cercato di creare un nuovo ramo e poi tirando dal repository biforcuta, ma si lamenta perché la nuova filiale è una copia del ramo principale, nonché le modifiche apportate ai file locali, così si dice

error: Your local changes to the following files would be overwritten by merge.

Quindi, come posso spostare il ramo nell'altro repository in un nuovo ramo nel mio repository locale?

Spero che abbia senso. In caso contrario, questo è il mio repository: https://github.com/MatthewLM/cbitcoin

Come si può vedere, qualcuno ha creato un nuovo repository con il ramo "linuxBuild": https://github.com/austonst/cbitcoin/tree/linuxBuild

voglio quel ramo sul mio repository locale per MatthewLM/cbitcoin.

Come posso fare questo?

risposta

102

È necessario assicurarsi che git status indichi che non sono presenti modifiche non modificate nel repository locale.
È possibile eseguire questa operazione prima memorizzando le modifiche locali e poi estraendo quel ramo. In seguito puoi applicare la tua scorta.


Se si desidera ricreare la struttura ramo della forcella nel repository locale, è possibile effettuare le seguenti operazioni:

git remote add fork <url of fork> 
git fetch fork 
git checkout -b fork_branch fork/<branch> 

Questo creerà la sezione locale con la stessa storia come <branch> nella forcella, ovvero si diramerà da master dove <branch> si trova nella forcella. Inoltre, il tuo ramo locale ora seguirà quel ramo nel fork, così puoi facilmente inserire nuove modifiche impegnate nel fork.

Penso che sia necessario accertarsi in anticipo che la copia di lavoro non contenga alcuna modifica.

+0

OK, grazie. Sarebbe bello se volessi le mie modifiche locali e il commit non trovato nel ramo dalla forcella. Ma cosa succede se voglio che il nuovo ramo sia esattamente come nel repository di fork? Ciò include la rimozione di qualsiasi commit dal mio repository dopo che il fork è successo per questo nuovo ramo. In questo modo sarebbe come se il ramo fosse stato creato sul mio repository piuttosto che su uno biforcuto. –

+0

Beh, la tua risposta è una soluzione accettabile per quello che devo fare, tuttavia troverei più semplice se potessi inserire una nuova filiale in un repository. Aspetterò un po 'per vedere cosa dicono gli altri. –

+0

@MatthewMitchell: verificare l'aggiornamento. E 'quello che stavi cercando? –

3

Metodo senza aggiunta remota.

git checkout --orphan fork_branch 
git reset --hard 
git pull <url of fork> <branch> 
Problemi correlati