2012-06-06 16 views

Respuesta

88

Los repositorios de submódulos permanecen en un estado HEAD aislado que señala una confirmación específica. Cambiar esa confirmación simplemente implica extraer una etiqueta diferente o confirmar y luego agregar el cambio al repositorio principal.

$ cd submodule 
$ git checkout v2.0 
Previous HEAD position was 5c1277e... bumped version to 2.0.5 
HEAD is now at f0a0036... version 2.0 

git-status en el repositorio padre informará ahora un árbol sucia:

# On branch dev [...] 
# 
# modified: submodule (new commits) 

Añadir el directorio submódulo y se comprometen a almacenar el nuevo puntero.

+4

Después de haber enviado el repositorio principal con una rama/versión específica de un submódulo, ¿pueden otros comprar la misma versión del submódulo en el futuro? O bien, tienen que especificar manualmente de nuevo? – QZHua

19

Paso 1: Agregar el submódulo

git submodule add git://some_repository.git some_repository 

Paso 2: Fijar el submódulo a una confirmación en concreto

Por defecto, la nueva sub-módulo estará seguimiento de la cabeza de la rama principal, pero no será actualizado a medida que actualiza su repositorio principal. Para cambiar el submódulo y rastrear un compromiso particular o un directorio de cambio de rama diferente a la carpeta del submódulo, cambie las ramas como lo haría en un repositorio normal.

git checkout -b some_branch origin/some_branch 

Ahora el submódulo se fija en la rama de desarrollo en lugar de HEAD of master.

De Two Guys Arguing — Tie Git Submodules to a Particular Commit or Branch.

+10

Es más fácil usar 'git submodule add -b some_branch git: //some_repository.git some_repository' – Caumons

+7

En este momento, no parece que' git submodule add -b' pueda tomar una etiqueta o sha1hash. Solo puede tomar una rama. – CMCDragonkai

Cuestiones relacionadas