J'ai essayé de trouver des réponses sur ce site et sur d'autres: StackOverflow - Extraction facile des derniers sous-modules
Ils semblent tous vouloir parler si vous les contrôlez, pas si quelqu'un d'autre en a ajouté un, et je veux juste insérer le supplémentaire dans mon projet sans avoir à cacher ou sauvegarder mes modifications si je dois supprimer le dossier.
Dois-je supprimer le .gitmodules
fichier et/ou les répertoires des sous-modules que j'ai déjà déroulés avec git clone --recursive
? ( StackOverflow - Comment git clone
y compris les sous-modules? )
Ces commandes ne semblent pas non plus aider:
git submodule update --init --recursive
semble n'avoir rien fait.git submodule update --recursive
rien.git fetch --recurse-submodules
sortie Fetching submodule ...
plusieurs fois.git pull --recurse-submodules
afficher la même chose, puis dire Already up-to-date.
après le procès de récupération. Étrange puisque dans les deux cas mes sous-modules étaient déjà téléchargés.git clone --recursive ...
Pas encore essayé. J'ai l'impression d'écraser toutes les modifications que j'ai apportées, dans la Stash ou autrement.git submodule update --recursive --remote
a extrait un nouveau commit SHA pour l'un des sous-modules.git submodule update --recursive
a extrait un nouveau commit SHA pour l'un des sous-modules. Il peut s'agir du plus ancien niveau de commit original.git submodule status
donne le SHA, la version et les informations de nom appropriés pour chacun, tout en manquant celui que je veux.git submodule foreach git pull Origin master
git submodule update
ne fait rien.J'ai vérifié chaque fois manuellement le répertoire de la bibliothèque pour m'assurer que le sous-module supplémentaire est apparu ou non.
Je veux éviter d'effectuer certaines actions, sauf si elles ne sont pas destructrices pour mon état de référentiel actuel contenant des modifications de code, et résout mon problème, au cas où il s'agit d'une commande que j'ai mentionnée mais que je n'ai pas exécutée, ou que quelqu'un d'autre en a une autre à essayer.
Je pourrais essayer certains d'entre eux avec plus d'efforts, mais je pense que je veux arrêter de jouer avec eux pour le moment, et comme je n'ai pas trouvé la réponse à ce problème après avoir fait des recherches en ligne, peut-être que la réponse pleine d'espoir et éventuellement aiderait les autres de toute façon .
Est-ce que je souffre du con mentionné ici? Génie logiciel - sous-module Git vs clone Git
Plus de liens:
git submodule update --init local/path/to/submodule/folder
La meilleure suggestion que j'ai reçue jusqu'à présent est d'exécuter cette commande:
git submodule add <URL_to_submodule> <local_path_to_place_submodule>
Il semble donc que ce que l'autre contributeur aurait fait, que je referais, même s'il existe déjà dans la télécommande.
Je suppose que cela ne met pas techniquement à jour le .gitmodules
fichier à partir des données de la télécommande comme ce qui serait attendu, mais n'a pas encore trouvé un moyen de le faire.
Le crédit pour l'aide va à @ pandatrax .
Mise à jour
Avant d'essayer la méthode add
, j'ai essayé une autre idée qui impliquait de copier la .gitmodules
à partir de la télécommande manuellement et en essayant l'une des commandes de mise à jour, mais malheureusement, cette approche n'a pas fonctionné non plus. Cela aurait pu être différent si j'avais exécuté les commandes à la racine, car j'étais dans un sous-dossier, mais j'en doute.
Ensuite, j'ai utilisé la méthode add
, qui a téléchargé la dépendance, mais la .gitmodules
le fichier a montré des changements. Une fois que j'ai configuré la télécommande GitHub et que je l'ai retirée après avoir supprimé ce fichier, le projet semble être dans un meilleur état maintenant, même en synchronisant les SHA de validation pour le module mis à jour ou 2, soit depuis qu'ils correspondent, soit il a été écrasé.
Vous devez faire deux choses:
git pull
dans votre référentiel principal qui contient les sous-modules. Cela ajoutera le nouveau sous-module en tant que répertoire vide.git submodule update --recursive --remote
dans le référentiel principal. Cela entraînera les dernières modifications pour tous les sous-modules, y compris le nouveau.Cela fonctionne au moins dans Git 2.13. Notez également que si les référentiels et les sous-modules sont sur GitHub, vous devez vous assurer que vous disposez des droits d'accès (s'ils sont privés).
Cela devrait fonctionner, tant que le nouveau sous-module est dans les modules .git en télécommande
git pull --recurse-submodules