2013-08-30 9 views
17

In un repository A la cartella sub è inclusa come sottotree git del repository S - che punta al ramo master.sottotree git: possibile cambiare ramo/percorso secondario in un repository biforcato?

Ho biforcuto deposito A in F. Ora voglio fare una delle seguenti operazioni nella F:

  • cambiamento sub di utilizzare un ramo diverso di S (cioè develop ramo)
  • o: cambiare sub utilizzare un repository completamente diversa

Uno di questi è possibile, e se sì, come? Ci saranno effetti collaterali che dovrei sapere?

E come posso essere sicuro che il mio cambiamento di sottostruttura non verrà aggiornato nel repository A quando unisco le mie modifiche (richiesta pull)? Voglio dire oltre a isolare i commit.

risposta

28

Se si utilizza git subtree (e non git submodule) per creare il sottoalbero, quindi è solo una normale directory. Per passare a un altro ramo, basta eliminarlo e ricreare il sottoalbero dal nuovo ramo. Questo è:

git rm <subtree> 
git commit 
git subtree add --prefix=<subtree> <repository_url> <branch> 

Che dovrebbe funzionare senza problemi.

+0

e che non verrà sincronizzato a monte? Immagino che darò una prova allora. – LearnCocos2D

+0

Non verrà sincronizzato a monte. "" non è salvato da nessuna parte; è solo usato per il comando per sapere da dove ottenere i file. Dopodiché, ottieni una normale sottodir all'interno del tuo repository. – elmart

+0

Ah ok, vedo che ora ... il sottostrato semplicemente "copia" lo stato di un commit di un altro repository, come se lo avessi copiato manualmente (ma conservando la cronologia dei commit e cosa no). In modo che non cambi il mio problema originale di non sincronizzare una cartella specifica tra due repository, ma risponde a sufficienza a questa domanda. – LearnCocos2D

Problemi correlati