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
.gitmodules
archivo para actualizar la URL y luego ejecutarlogit submodule sync
para reflejar ese cambio en el superproyecto y su copia de trabajo.fuente
git submodule foreach -q git config remote.origin.url
para ver las URL de submódulo "reales".git/config
para mí usando git 2.1.0. Tuve que actualizar ambos.gitmodules
y.git/config
manualmente antes de ejecutar agit submodule sync --recursive
para que se actualizara mi submódulo remoto.git submodule update --init --recursive --remote
que 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 .gitmodules
git commit -m "modified submodule URL"
git push origin master
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:
o solo:
luego sincronizar y actualizar:
fuente
git submodule update --init
funcionó para mí,--remote
parece 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
gitmodule
rol.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/config
haciendo: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 init
ygit submodule update
Despué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/external
directorio, 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 -e
abre el editor predeterminado en el que puede actualizar la rutafuente