2010-06-01 25 views
65

He estado usando SVN para todos mis proyectos. A veces, el proyecto B se origina como una copia del proyecto A. Cuando el proyecto A tiene un cambio genérico, puedo usar svn merge A en el directorio B y combinará esos cambios.git fusionar diferentes repositorios?

Ahora, si quisiera usar git. No me gusta tener todos mis proyectos en el mismo repositorio ya que tengo que clonar todo y no puedo elegir solo un proyecto como en SVN. Pero teniendo un repositorio para cada proyecto, ¿cómo hago lo mismo que hice antes con SVN?

La pregunta es: ¿Cuál es la mejor manera de estructurar si quiero varios subproyectos que realmente todo se relaciona con un proyecto original y para mantenerlos sincronizados? Y que yo también quiero ser capaz de comprobar a cabo por separado

+1

Será mejor que eche un vistazo a git-submodule (http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html). – Cascabel

+0

@Jefromi pero los archivos fuente son básicamente de la misma historia, ¿esto significa que tengo dos copias de los archivos? Creo que el submódulo es más para realizar un seguimiento de las bibliotecas externas que incluye como archivos separados (no fusionar). – baloo

+0

No importa, no vi que dijeses que B era una copia de A. Leyendo tu "la pregunta es", donde dijiste "subproyectos ... relacionados con un proyecto original ... sincronizados" Supuse que querías decir sacando trozos de ese proyecto original, pero manteniéndolos sincronizados en el metaproyecto. – Cascabel

Respuesta

113

Si tiene dos proyectos, proj1 y proj2 y desea fusionar los cambios de proj1 en proj2, que lo haría así:

# in proj2: 
git remote add proj1 path/to/proj1 
git fetch proj1 
git merge proj1/master # or whichever branch you want to merge 

Creo que esto hace lo mismo que lo que estabas haciendo con SVN.

+0

¿Pero fusionará la pista de cambio n. ° 2 que ya fusionamos, cambie la n. ° 1 y lo hace de esta manera? Tuve que volver a fusionar todos los cambios (y corregir los conflictos) para todos los cambios cada vez que se agregaba un nuevo cambio si recuerdo correcto. Esto no sucedió en el modo SVN – baloo

+0

Por supuesto, la fusión funciona como siempre. No tiene que "volver a fusionar todos los cambios". Esto no es más que la fusión habitual, la que usaría con un servidor distante. –

+0

¿Qué sucede si no tengo un control remoto? Me gustaría hacer lo mismo (fusionar projA en projB) pero estoy trabajando solo localmente sin controles remotos. –

Cuestiones relacionadas