Digamos que soy el propietario de dos proyectos remotos: MainProject
y AppsProject
.
En el repository local, quiero tener AppsProject
en el subdirectory de MainProject
( apps/
).
Intenté usar la estrategia de subtree merge
(ref .: Pro Git Book )
En el directory de MainProject
. He hecho eso
$ git remote add apps-remote git@bitbucket.com:me/apps.git $ git checkout -b apps-branch apps-remote/master $ git checkout master $ git read-tree --prefix=apps/ -u apps-branch $ git checkout apps-branch $ git pull
En realidad, lo que quiero ahora es poder confirmar apps/
locales apps/
cambios en el repository remoto de AppsProject
y cualquier cosa que no esté en las apps/
en el repository remoto de MainProject
.
¿Como hacer eso?
Para crear un submodule:
$ cd MainProject $ git submodule add git@bitbucket.com:me/apps.git apps $ git commit -a -m "added a submodule" $ git push
Ahora clonar nuevo:
$ git clone --recursive git@bitbucket.com:me/MainProject.git
O si ya lo clonaron en algún lugar pero antes de agregar el submodule:
$ git submodule update --init #Or without the --init to update the submodule
Tenga en count que cuando realiza cambios en el submodule, primero debe confirmar los cambios en el submodule y luego confirmar los cambios en el repository principal para que lo recoja. El submodule siempre está congelado en el último compromiso en el repository principal.
Haría que el proyecto interno fuera un submodule. Esto le permitiría tratar el proyecto externo por separado.