J'ai créé un référentiel git contenant un sous-module. Je suis en mesure de dire au sous-module lui-même de changer son chemin de référentiel distant, mais je ne sais pas comment dire au référentiel parent comment changer le chemin du référentiel distant pour le sous-module.
Je ne serais pas surpris si je suis un peu malchanceux et que je dois faire les choses manuellement, car même la suppression de sous-modules n'est pas facile.
git
git-submodules
Andrew Grimm
la source
la source
git submodule set-url [--] <path> <newurl>
Réponses:
Vous devez simplement pouvoir modifier le
.gitmodules
fichier pour mettre à jour l'URL, puis exécutergit submodule sync
pour refléter cette modification dans le superprojet et votre copie de travail.la source
git submodule foreach -q git config remote.origin.url
pour voir les URL "réelles" du sous-module.git/config
pour moi en utilisant git 2.1.0. J'ai dû mettre à jour les deux.gitmodules
et.git/config
manuellement avant d'exécuter ungit submodule sync --recursive
pour que ma télécommande de sous-module soit mise à jour.git submodule update --init --recursive --remote
qui modifie réellement le référentiel en la nouvelle télécommandeCes commandes feront le travail sur l'invite de commande sans modifier aucun fichier sur le référentiel local
Veuillez consulter le blog pour les captures d'écran: Modification de l'URL / branche des sous-modules GIT en une autre URL / branche du même référentiel
la source
git add .gitmodules
git commit -m "modified submodule URL"
git push origin master
En termes simples, il vous suffit de modifier le fichier .gitmodules, puis de resynchroniser et de mettre à jour:
Modifiez le fichier, soit via une commande git, soit directement:
ou juste:
puis resynchronisez et mettez à jour:
la source
git submodule update --init
travaillé pour moi,--remote
semble le lier à la tête du repo à distance.Avec Git 2.25 (Q1 2020), vous pouvez le modifier .
Voir "L' URL du sous-module Git a changé " et la nouvelle commande
Réponse originale (mai 2009, il y a dix ans)
En fait, un correctif a été soumis en avril 2009 pour clarifier le
gitmodule
rôle.Alors maintenant, la documentation de gitmodule ne comprend pas encore:
Cela confirme à peu près la réponse de Jim .
Si vous suivez ce tutoriel de sous-module git , vous voyez que vous avez besoin d'un "
git submodule init
" pour ajouter les URL du référentiel de sous-module à .git / config."
git submodule sync
" a été ajouté en août 2008 précisément pour faciliter cette tâche lorsque l'URL change (surtout si le nombre de sous-modules est important).Le script associé à cette commande est assez simple:
L'objectif reste:
git config remote."$remote".url "$url"
la source
.git/config
faisant:git config submodule."$submodule_name".url "$new_url"
ce qui est également décrit ici .git submodule set-url [--] <path> <newurl>
servent les doubles tirets en option ?Ce qui a fonctionné pour moi (sous Windows, en utilisant la version 1.8.3.msysgit.0 de git):
git submodule init
etgit submodule update
Après avoir fait tout ça, tout est dans l'état auquel je m'attendais. J'imagine que d'autres utilisateurs du référentiel éprouveront la même douleur lorsqu'ils viendront à jour - il serait sage d'expliquer ces étapes dans votre message de validation!
la source
git submodule update
. Suivre les autres réponses ne changerait pas ce qui se trouvait dans le./git/modules/external
répertoire, donc tenter de mettre à jour le ferait toujours tirer l'URL incorrecte.Modifiez simplement votre fichier .git / config . Par exemple; si vous avez un sous-module "commun" vous pouvez le faire dans le super-module:
la source
git config --file=.gitmodules -e
ouvre l'éditeur par défaut dans lequel vous pouvez mettre à jour le cheminla source