tag - Los módulos de Force Git siempre se mantienen actualizados
que es git log (3)
Me encantan los submódulos de git. Además, odio los submódulos de git. Lo que me encanta de ellos es cómo te permite dividir las dependencias de manera limpia, etc. Me da el punto de hacer que apunten a un compromiso específico en un repositorio, lo hago. Pero en mi caso, estoy construyendo una biblioteca que se utilizará en otro proyecto, por lo que quiero mantenerlo en ese repositorio independiente.
Sin embargo, la molestia surge cuando estoy trabajando a diario en esta biblioteca y constantemente tengo que volver a la aplicación usando mi biblioteca para confirmar la actualización del puntero.
Entonces, ¿es posible tener un submódulo de git siempre en la cabeza del repositorio al que apunta mientras estoy constantemente actualizando y agregando a esta biblioteca?
¿Por qué no haces cambios dentro del directorio del submódulo, que a su vez es un repositorio git? De esta manera, su aplicación siempre tendrá una biblioteca actualizada.
Advertencias:
Aún debe confirmar el cambio de submódulo dentro del repositorio de la aplicación para poner el cambio en el control de la versión (para la aplicación).
Si hay más aplicaciones que una que usan esta biblioteca, esto no funcionará, ya que solo una aplicación estará actualizada en un momento dado.
Como mencioné en " git submodule tracking latest ", desde git 1.8.2 (marzo de 2013) puedes hacer que un submódulo rastree el HEAD de la rama:
git submodule add -b <branch> <repository> [<path>]
Un submódulo SHA1 todavía se registra en el repositorio padre como un gitlink ( entrada especial en el índice )
Pero una git submodule update --remote
actualizará esa entrada al SHA1 que coincide con el HEAD de una rama del repositorio remoto del submódulo.
Si tiene un submódulo existente, puede hacer que siga una bifurcación con:
cd /path/to/your/parent/repo
git config -f .gitmodules submodule.<path>.branch <branch>
cd path/to/your/submodule
git checkout -b branch --track origin/branch
# if the master branch already exist:
git branch -u origin/master master
cd /path/to/your/parent/repo
git add path/to/your/submodule
git commit -m "Make submodule tracking a branch"
No, y esto es por diseño. Si hubiera una manera de apuntar un submódulo al "encabezado actual" de otro repositorio, entonces sería imposible recuperar una versión histórica (como una versión etiquetada) del repositorio principal. No sabría qué versión del submódulo verificar.
Una vez dicho esto, puede que te interese el script del subárbol de git . Esto ofrece una forma diferente de trabajar con submódulos que pueden ser más compatibles con su flujo de trabajo. Me acabo de acordar de esto por la publicación reciente en HN .