¿Cómo verifico una versión específica de un submódulo usando 'git submodule'?


Respuestas:


167

Los repositorios de submódulos permanecen en un estado HEAD separado que apunta a una confirmación específica. Cambiar esa confirmación simplemente implica verificar una etiqueta o confirmación diferente 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 principal ahora informará un árbol sucio:

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

Agregue el directorio del submódulo y comprométase a almacenar el nuevo puntero.


14
Después de haber confirmado el repositorio principal con una rama / versión específica de un submódulo, ¿otros pueden verificar la misma versión del submódulo en el futuro? ¿O tienen que volver a especificar manualmente?
— QZHua

@QZHua: Experimenté con esto yo mismo y parece que el ID de confirmación del submódulo se conserva cuando se clona el padre.
— Psychonaut

37

Paso 1: agregue el submódulo

   git submodule add git://some_repository.git some_repository

Paso 2: arregla el submódulo a una confirmación en particular

De forma predeterminada, el nuevo submódulo hará un seguimiento de HEAD de la rama maestra, pero NO se actualizará a medida que actualice su repositorio principal. Para cambiar el submódulo para rastrear una confirmación en particular o una rama diferente, cambie el directorio a la carpeta del submódulo y cambie las ramas como lo haría en un repositorio normal.

   git checkout -b some_branch origin/some_branch

Ahora el submódulo está fijo en la rama de desarrollo en lugar de HEAD del maestro.

De dos tipos discutiendo: vincule los submódulos de Git a una confirmación o rama en particular .


20
Es más fácil de usargit submodule add -b some_branch git://some_repository.git some_repository
— Caumons

15
En este momento no parece que git submodule add -bpueda tomar una etiqueta o un sha1hash. Solo puede tomar una rama.
— CMCDragonkai

¿Hay algún problema para esto en el rastreador de problemas de Git? ¿Alguien podría publicar una URL para que podamos rastrearla? Gracias.
— colan

Las instrucciones de @colan para informar errores se encuentran en git-scm.com/community . Pero -bel hecho de admitir ramas y no etiquetas o commit shas es una característica, no un error (de hecho, -bes una abreviatura de --branch).
— Henry

1
Suspiro. Después de todos estos años, todavía no tienen un rastreador público de problemas.
— colán
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.