2010-06-25 11 views
5

uso git workflow como se describe en this blogpost. En resumen: todo el mundo se desarrolla dentro de su propia sucursal, antes de volver a fusionarse con el maestro, usted vuelve a basar su sucursal para dominar nuevamente para obtener un historial limpio.git: cómo obtener cambios de nuevo en el maestro al trabajar con los submódulos

Esto funciona.

Ahora tenemos un submódulo, y debido a que este es un plugin interno (Rails), tenemos que cambiar esto a menudo. Así que la mayoría de las veces tengo cambios tanto en la rama general como en la rama del submódulo.

¿Cuál es la mejor manera de trabajar con submódulos en el flujo de trabajo como se indica anteriormente?

Primero intento impulsar mis cambios al submódulo (git checkout master, git pull, git checkout branch, git rebase master, git checkout master, git merge branch).

Luego, cuando intento hacer lo mismo con mi raíz, siempre aparece un error en mi complemento (submódulo). Tengo que resolver el error, antes de hacer git rebase --continue. Entonces, si intentas git mergetool, convierto mi carpeta a un archivo.

Después de que la rebase ha terminado, simplemente restauro el <folder_name>.orig para sobrescribir el archivo <folder_name> y todo está bien.

Pero de alguna manera se siente que debería haber una mejor manera.

En resumen: cuando se trabaja a través de checkout-b/rebase/merge - workflow, ¿cómo maneja los submódulos modificados simultáneamente?

Respuesta

2

Sea cual sea el flujo de trabajo que está siguiendo with submodules, hay una regla que no debe olvidar:
(Desde el tutorial Git)

Si desea hacer un cambio dentro de un sub-módulo, primero debe cheque fuera de una rama, realice los cambios, publique el cambio dentro del submódulo y luego actualice el superproyecto para hacer referencia al nuevo compromiso.

$ git checkout master 
$ echo "adding a line again" >> a.txt 
$ git commit -a -m "Updated the submodule from within the superproject." 
$ git push 
$ cd .. 
$ git add a  # There is a gotcha here. Read about it below. 
$ git commit -m "Updated submodule a." 

Así que cometiste el nuevo estado de su submódulo dentro del proyecto principal antes de intentar el rebase/fusión de dicho proyecto principal?

Cuestiones relacionadas