es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo hacer staging (git add) de todos los cambios y archivos nuevos excepto los repositorios incrustados?

Trabajo mucho con sourcetree y cuando hago staging ahí, no incluye los repositorios incrustados. No sé cómo lo hacen, pero eso es lo que me gustaría lograr a través de la línea de comandos. Leí la documentación de git add aquí (https://git-scm.com/docs/git-add) pero no encontré nada que logre esto. Podría implementarlo con un script de bash, pero me preguntaba si tal vez me estaba perdiendo algo y hay una forma más sencilla de hacerlo.

Por cierto, no quisiera resolver esto con un comando que requiera escribir el nombre exacto de los repositorios incrustados, ya que tengo muchos repositorios de manifiesto como este y estoy buscando una solución genérica.

EDIT: Aquí te explico cómo reproducirlo tú mismo: crea cualquier repositorio de git y dentro de él crea otro repositorio de git. Ve al repositorio principal y ejecuta git add . y verás que git te da el siguiente mensaje:

enter image description here

+++++++++++++++++++

El contexto:

Tengo un repositorio que contiene varios otros repositorios incrustados. Gestiono todos los repositorios incrustados mediante un archivo de manifiesto (un archivo de texto que enumera cada repositorio y su commit y rama asociados) y cuando quiero sincronizarlos, simplemente hago checkout de las ramas y commits relevantes basados en el archivo de manifiesto usando un script de bash que escribí. Estoy desarrollando una aplicación que implementa una solución de gestión multi-repo que combina características de los submódulos y el repositorio de Google con la adición de una interfaz gráfica de usuario. Por eso es que no estoy usando submódulos aquí a propósito.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución para Establecer Repositorios Incrustados en Git

    Cuando se utiliza Sourcetree, el proceso de establecer no incluye repositorios incrustados. El usuario desea lograr el mismo resultado a través de la línea de comandos sin tener que escribir el nombre exacto de los repositorios incrustados, ya que tienen muchos repositorios de manifiesto de este tipo y están buscando una solución genérica. Aquí está una solución para establecer repositorios incrustados en Git:

    El comando git add no incluye repositorios incrustados de forma predeterminada. Sin embargo, utilizando la bandera --recurse-submodules con git add, los repositorios incrustados también serán añadidos. El comando para hacerlo es:

    git add --all --recurse-submodules

    Este comando establecerá todos los cambios, incluyendo submódulos (es decir, repositorios incrustados), e ignorará archivos no rastreados.

    Además, puedes configurar el valor de la opción status.submoduleSummary en true para mostrar el estado de los submódulos en la salida del comando git status:

    git config --global status.submoduleSummary true

    Esto te dará un resumen del estado del submódulo junto al estado del repositorio padre.

    Es importante tener en cuenta que al enviar los cambios a un repositorio remoto, también debes enviar los cambios a los submódulos por separado (utilizando git push --recurse-submodules=on-demand).

    En resumen, ejecutar git add --all --recurse-submodules establecerá todos los cambios, incluyendo los cambios realizados en los repositorios incrustados.

Comments are closed.