He creado un repositorio git con un submódulo en él. Puedo decirle al submódulo mismo que cambie su ruta de repositorio remoto, pero no estoy seguro de cómo decirle al repositorio principal cómo cambiar la ruta de repositorio remoto para el submódulo.
No me sorprendería si no tuviera suerte y tuviera que hacer las cosas manualmente, ya que incluso eliminar submódulos no es fácil.
git
git-submodules
Andrew Grimm
fuente
fuente

git submodule set-url [--] <path> <newurl>Respuestas:
Debería poder editar el
.gitmodulesarchivo para actualizar la URL y luego ejecutarlogit submodule syncpara reflejar ese cambio en el superproyecto y su copia de trabajo.fuente
git submodule foreach -q git config remote.origin.urlpara ver las URL de submódulo "reales".git/configpara mí usando git 2.1.0. Tuve que actualizar ambos.gitmodulesy.git/configmanualmente antes de ejecutar agit submodule sync --recursivepara que se actualizara mi submódulo remoto.git submodule update --init --recursive --remoteque realmente cambia el repositorio al nuevo control remotoEstos comandos harán el trabajo en el símbolo del sistema sin alterar ningún archivo en el repositorio local
Mire el blog para ver capturas de pantalla: Cambio de URL / Rama de submódulos GIT a otra URL / rama del mismo repositorio
fuente
git add .gitmodulesgit commit -m "modified submodule URL"git push origin masterEn 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:
o solo:
luego sincronizar y actualizar:
fuente
git submodule update --initfuncionó para mí,--remoteparece vincularlo a la CABEZA del repositorio remoto.Con Git 2.25 (Q1 2020), puede modificarlo .
Consulte "La URL del submódulo Git ha cambiado " y el nuevo comando
Respuesta original (mayo de 2009, hace diez años)
En realidad, se envió un parche en abril de 2009 para aclarar el
gitmodulerol.Entonces ahora el documentación de gitmodule aún no incluye:
Eso prácticamente confirma la respuesta de Jim .
Si sigue este tutorial de submódulo git , verá que necesita un "
git submodule init" para agregar las URL del repositorio de submódulos a .git / config."
git submodule sync" se agregó en agosto de 2008 precisamente para facilitar esa tarea cuando la URL cambia (especialmente si el número de submódulos es importante).El script asociado con ese comando es lo suficientemente sencillo:
El objetivo sigue siendo:
git config remote."$remote".url "$url"fuente
.git/confighaciendo:git config submodule."$submodule_name".url "$new_url"que también se describe aquí .git submodule set-url [--] <path> <newurl>?Lo que funcionó para mí (en Windows, usando git versión 1.8.3.msysgit.0):
git submodule initygit submodule updateDespués de hacer todo eso, todo está en el estado que esperaría. Sin embargo, imagino que otros usuarios del repositorio tendrán un dolor similar cuando vengan a actualizar, ¡sería prudente explicar estos pasos en su mensaje de confirmación!
fuente
git submodule update. Seguir las otras respuestas no cambiaría lo que había en el./git/modules/externaldirectorio, por lo que intentar actualizarlo provocaría que todavía extraiga la URL incorrecta.Simplemente edite su archivo .git / config . Por ejemplo; Si tiene un submódulo "común" , puede hacerlo en el supermódulo:
fuente
git config --file=.gitmodules -eabre el editor predeterminado en el que puede actualizar la rutafuente