tipos tag repositorio origin example etiquetas eliminar crear git git-submodules

tag - ¿Cómo cambiar el repositorio remoto para un submódulo git?



git push tag (7)

En realidad, se ha enviado un parche en abril de 2009 para aclarar el rol de gitmodule .

Así que ahora la documentación de gitmodule aún no incluye:

El archivo .gitmodules , ubicado en el directorio de nivel superior de un árbol de trabajo de git, es un archivo de texto con una sintaxis que cumple con los requisitos de linkgit: git-config 1 .
[NUEVO]:
Como este archivo es administrado por Git, rastrea los registros + de los submódulos de un proyecto.
La información almacenada en este archivo se utiliza como una sugerencia para preparar la versión autorizada del registro almacenado en el archivo de configuración del proyecto.
Los cambios de registro específicos del usuario (por ejemplo, para tener en cuenta las diferencias en las URL de submódulos debido a situaciones de red) deben realizarse en el archivo de configuración, mientras que los cambios de registros a propagar (por ejemplo, + debido a una reubicación de la fuente del submódulo) deben realizarse a este archivo .

Eso confirma bastante la respuesta de Jim .

Si sigue este tutorial de git submodule , verá que necesita un " git submodule init " para agregar las URL del repositorio de submodules a .git / config.

" git submodule sync " se agregó en agosto de 2008 precisamente para facilitar esa tarea cuando cambia la URL (especialmente si el número de submódulos es importante).
El script asociado con ese comando es bastante sencillo:

module_list "$@" | while read mode sha1 stage path do name=$(module_name "$path") url=$(git config -f .gitmodules --get submodule."$name".url) if test -e "$path"/.git then ( unset GIT_DIR cd "$path" remote=$(get_default_remote) say "Synchronizing submodule url for ''$name''" git config remote."$remote".url "$url" ) fi done

El objetivo sigue siendo: git config remote."$remote".url "$url"

He creado un repositorio git con un submódulo en él. Puedo decirle al submódulo mismo que cambie su ruta del repositorio remoto, pero no estoy seguro de cómo decirle al repositorio principal cómo cambiar la ruta del repositorio remoto para el submódulo.

No me sorprendería si estuviera algo fuera de suerte y tuviera que hacer las cosas manualmente, ya que incluso deleting submódulos no es fácil.


En términos simples, solo necesita editar el archivo .gitmodules, luego volver a sincronizar y actualizar:

Edite el archivo, ya sea a través de un comando git o directamente:

git config --file=.gitmodules -e

o solo:

vim .gitmodules

luego volver a sincronizar y actualizar:

git submodule sync git submodule update --init --recursive --remote


Estos comandos harán el trabajo en el símbolo del sistema sin alterar ningún archivo en el repositorio local

git config --file=.gitmodules submodule.Submod.url https://github.com/username/ABC.git git config --file=.gitmodules submodule.Submod.branch Development git submodule sync git submodule update --init --recursive --remote

Mire el blog para ver capturas de pantalla: Cambio de los submódulos de GIT URL / Sucursal a otra URL / sucursal del mismo repositorio


Lo que me funcionó (en Windows, utilizando git versión 1.8.3.msysgit.0):

  • Actualice .gitmodules con la ruta al nuevo repositorio
  • Elimine la línea correspondiente del archivo ".git / config"
  • Elimine el directorio correspondiente en el directorio ".git / modules / external"
  • Elimine el directorio del submódulo desprotegido (no está seguro si esto es necesario)
  • Ejecutar git submodule init y git submodule update
  • Asegúrese de que el submódulo desprotegido esté en el compromiso correcto, y confirme eso, ya que es probable que el hash sea diferente

Después de hacer todo eso, todo está en el estado que yo esperaría. Sin embargo, me imagino que otros usuarios del repositorio tendrán un dolor similar cuando se actualicen. ¡Sería conveniente explicar estos pasos en su mensaje de confirmación!


Solo edita tu archivo .git / config . Por ejemplo; Si tiene un submódulo "común" , puede hacer esto en el super-módulo:

git config submodule.common.url /data/my_local_common


git config --file=.gitmodules -e abre el editor predeterminado en el que puede actualizar la ruta


Solo debe poder editar el archivo .gitmodules para actualizar la URL y luego ejecutar git submodule sync para reflejar ese cambio en el superproyecto y su copia de trabajo.