Negro
Este es mi .gitmodules
:
[submodule "app/code/EthanYehuda/CronjobManager"]
path = app/code/EthanYehuda/CronjobManager
url = https://company@bitbucket.org/some_user/ethanyehuda_cronjobmanager.git
Necesito cambiar la url a https://github.com/Ethan3600/magento2-CronjobManager.git
Así que lo acabo de cambiar:
[submodule "app/code/EthanYehuda/CronjobManager"]
path = app/code/EthanYehuda/CronjobManager
url = https://github.com/Ethan3600/magento2-CronjobManager.git
Luego agregué el archivo al área de preparación e hice una confirmación:
git add .gitmodules
git commit -m "change url of submodule xy"
Entonces ejecuté git submodule update --init
. pero si voy a app/code/EthanYehuda/CronjobManager
y muestro el control remoto, entonces sigo recibiendo https://company@bitbucket.org/some_user/ethanyehuda_cronjobmanager.git
jthill
.gitmodules
contiene los valores predeterminados sugeridos, sus cambios surtirán efecto al configurar clones posteriores.
Sin embargo, una vez que alguien ha hecho el clon, el repositorio resultante es solo un repositorio. Puede ingresar al directorio de su submódulo existente y cambiar su URL remota de origen de la manera habitual, pero el git submodule
el mando tiene un atajo útil,
git submodule sync
para llenar todos los espacios en blanco por usted.
sync [--recursive] [--] [<path>…]
Sincroniza la configuración de URL remota de los submódulos con el valor especificado en
.gitmodules
. Solo afectará a aquellos submódulos que ya tienen una entrada de URL en.git/config
(Ese es el caso cuando se inicializan o se agregan recientemente). Esto es útil cuando las URL de los submódulos cambian en sentido ascendente y necesita actualizar sus repositorios locales en consecuencia.
git submodule sync
sincroniza todos los submódulos mientrasgit submodule sync -- A
sincroniza el submódulo “A” solamente.Si
--recursive
se especifica, este comando recurrirá a los submódulos registrados y sincronizará cualquier submódulo anidado dentro.
-
No funciona. Cambié la URL de otro repositorio (app\code\Yireo\Webp2) con
git remote set-url origin https://github.com/yireo/Yireo_Webp2.git
. Entonces ejecutégit submodule sync
. pero el archivo.gitmodules
no se actualizó con la nueva URL.– Negro
31 de enero de 2020 a las 14:24
-
No, tienes que haber actualizado ya
.gitmodules
, luego sincronización de submódulo. Como dicen los documentos citados, la sincronización actualiza la configuración remota de lo que está en.gitmodules
.– jthill
31 de enero de 2020 a las 14:26
-
Supongo que esta solución funcionará, si el historial de git no es completamente diferente.
– Negro
31 de enero de 2020 a las 15:37
-
¿Eh? ¿Cómo importaría eso? Git busca la confirmación registrada para una ruta en el historial disponible allí. Cambie las direcciones URL a un nuevo repositorio, obtenga el historial allí y listo. Ahora su repositorio de submódulo tiene las historias del anterior anterior y el nuevo, no hay nada de malo en eso.
– jthill
31 de enero de 2020 a las 15:41
-
Caso en cuestión: ese no era un directorio, simplemente eliminó un puntero al repositorio de submódulo intacto dentro de su proyecto principal
.git
ygit submodule update
restaurado el puntero.– jthill
31 de enero de 2020 a las 16:12
Desde git v2.25.0 (registro de cambios), git submodule
aprende lo nuevo establecer URL dominio.
Para usarlo simplemente haz git submodule set-url -- <path> <url>
Para ti es:
git submodule set-url -- app/code/EthanYehuda/CronjobManager https://github.com/Ethan3600/magento2-CronjobManager.git
Nota: dondequiera que estés en tu git, la ruta debe ser relativa al directorio superior.
Ver esta respuesta para más información.
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
-
Esto parece mucho más complicado de lo que debería ser. ¿Es esta la forma oficial?
– Negro
31 de enero de 2020 a las 13:10
Negro
Para mí, las soluciones que encontré no funcionaron, porque el historial de git de mi repositorio es completamente diferente al historial del nuevo repositorio.
Dejame explicar. Recibí un proyecto como un archivo Zip. Inicialicé un nuevo repositorio, comprometí los archivos y los pasé a mi bitbucket.
Luego descubrí que es un proyecto público de github. Así que quería cambiar la URL del repositorio de github. Pero tienen historias de git completamente diferentes (mi repositorio solo tiene una confirmación inicial, mientras que el repositorio de github contiene todas las confirmaciones).
Por lo tanto, no funcionará simplemente cambiando las URL.
Así que tuve que borrar el submódulo y crearlo de nuevo.
Insinuación:
<name_of_submodule>
= aplicación/código/EthanYehuda/CronjobManager (en mi caso)
Borrar:
git submodule deinit <name_of_submodule>
git rm -f <name_of_submodule>
rm -rf .git/modules/<name_of_submodule>
git commit -m "Deleted submodule xy"
Re añadir:
git submodule add --force https://github.com/example/foo-bar.git <name_of_submodule>
git commit -m "Add submodul xy"
Obteniendo la aplicación/código/EthanYehuda/CronjobManager del submódulo: el servidor rechazó las solicitudes para el objeto no especificado 9b677ef0e750acb9292030306bd97a3ee2734c61
↑ Si aparece un error como este después de extraer el proyecto en un clon, por ejemplo, en etapa, entonces debe sync
y update --init
después git pull
:
git submodule sync
git submodule update --init
Debe eliminar y resincronizar su submódulo después de actualizar la URL.
Consulte esta respuesta. https://stackoverflow.com/a/14405542/1895270
-
No funciona. Lo intenté paso a paso… me sale
error: The server rejects a request for an object not offered 86bbb310a268106bae244bc50bb6232fa8f0727f.
– Negro
31 de enero de 2020 a las 12:34
-
"fetch" executed in submodule path 'app / code / Fooman / GoogleAnalyticsPlus', but 86bbb310a268106bae244bc50bb6232fa8f0727f not contain. Requesting this commit directly failed.
– Negro
31 de enero de 2020 a las 12:43
-
Creo que se muestra el error, porque mi primer repositorio es mío y solo tiene una confirmación inicial, y el nuevo tiene un historial de git completamente nuevo de github.
– Negro
31 de enero de 2020 a las 12:59
-
Si no está cambiando a un repositorio con un historial de git completamente diferente, entonces supongo que su método funciona.
– Negro
31 de enero de 2020 a las 13:11
-
No funciona. Lo intenté paso a paso… me sale
error: The server rejects a request for an object not offered 86bbb310a268106bae244bc50bb6232fa8f0727f.
– Negro
31 de enero de 2020 a las 12:34
-
"fetch" executed in submodule path 'app / code / Fooman / GoogleAnalyticsPlus', but 86bbb310a268106bae244bc50bb6232fa8f0727f not contain. Requesting this commit directly failed.
– Negro
31 de enero de 2020 a las 12:43
-
Creo que se muestra el error, porque mi primer repositorio es mío y solo tiene una confirmación inicial, y el nuevo tiene un historial de git completamente nuevo de github.
– Negro
31 de enero de 2020 a las 12:59
-
Si no está cambiando a un repositorio con un historial de git completamente diferente, entonces supongo que su método funciona.
– Negro
31 de enero de 2020 a las 13:11
¿Responde esto a tu pregunta? ¿Cómo cambiar el repositorio remoto para un submódulo git?
– Potherca
5 oct 2021 a las 11:50