2017-05-22 1 views
2

essayé de chercher des réponses sur ce site et d'autres: StackOverflow - Easy way pull latest of all submodulesComment tirer une nouvelle sous-module

Ils semblent tous vouloir parler si vous les contrôlez, pas si quelqu'un d'autre a ajouté, et je veux juste pour tirer le supplémentaire dans mon projet sans avoir à stocker ou sauvegarder mes modifications si j'ai besoin de supprimer le dossier. Dois-je supprimer le fichier .gitmodules et/ou les sous-dossiers que j'ai déjà retirés avec git clone --recursive? (StackOverflow - How to git clone including submodules?)

Ces commandes ne semblent pas aider non plus:

  • git submodule update --init --recursive semble comme il n'a rien fait.
  • git submodule update --recursive rien.
  • git fetch --recurse-submodules sortie Fetching submodule ... plusieurs fois.
  • git pull --recurse-submodules sortie la même chose, puis a déclaré Already up-to-date. après l'essai de récupération. Etrange puisque dans tous les cas mes sous-modules étaient déjà téléchargés.
  • git clone --recursive ...Pas encore essayé. J'ai l'impression d'écraser les changements que j'ai faits, dans le Stash ou ailleurs.
  • git submodule update --recursive --remote a vérifié un nouveau commit SHA pour l'un des sous-modules.
  • git submodule update --recursive extrait un nouveau commit SHA pour l'un des sous-modules. Peut-être le niveau de validation plus ancien et original.
  • git submodule status donne les informations appropriées SHA, version et nom pour chacun, tout en manquant de 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 vérifier si le sous-module supplémentaire est apparu ou non. Je veux éviter d'effectuer certaines actions, à moins qu'elles ne soient destructrices de mon état de dépôt actuel contenant des changements de code, et résout mon problème, dans le cas où c'est une commande que j'ai mentionnée mais qui n'a pas essayer. Je pourrais essayer certains d'entre eux avec plus d'effort, mais je pense que je veux arrêter de jouer avec eux pour l'instant, et puisque je n'ai pas trouvé la réponse à ce problème après avoir fait des recherches en ligne, peut-être la réponse aiderait les autres de toute façon.

Est-ce que je souffre du con mentionné ici? Software Engineering - Git submodule vs Git clone

Plus de liens:

Répondre

2

meilleure suggestion que je l'ai reçu à ce jour est d'exécuter cette commande:

git submodule add <URL_to_submodule> <local_path_to_place_submodule> 

Il semble être ce que l'autre contributeur aurait fait, que je referais, même si elle existe déjà dans la télécommande.

Je suppose que cela ne techniquement pas mettre à jour le fichier .gitmodules à partir des données de la télécommande comme ce qui serait attendu, mais n'ont pas encore trouvé un moyen de le faire.

Le crédit pour l'aide passe à @pandatrax.

Mise à jour

Avant d'essayer la méthode add, j'ai essayé une idée plus qui impliquait la copie du fichier .gitmodules de la télécommande manuellement et essayer l'une des commandes de mise à jour, mais malheureusement, cette approche ne fonctionne pas non plus. Cela peut avoir été différent si j'ai exécuté les commandes dans la racine, puisque 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 le fichier .gitmodules a montré des modifications. Une fois que j'ai mis en place la télécommande GitHub et l'ai retirée après avoir ignoré ce fichier, le projet semble être dans un meilleur état maintenant, même en synchronisant les SHA de commit pour le module mis à jour ou 2, soit parce qu'ils correspondent, soit il a été écrasé.

12
git submodule update --init local/path/to/submodule/folder 
0

Vous devez faire deux choses:

  1. dans votre git pull Effectuer référentiel principal qui contient les sous-modules. Cela ajoutera le nouveau sous-module en tant que répertoire vide.
  2. Do git submodule update --recursive --remote dans le référentiel principal. Cela va tirer les derniers changements pour tous les sous-modules, y compris le nouveau.

Cela fonctionne au moins dans Git 2.13. Notez également que si les dépôts et les sous-modules sont sur GitHub, vous devez vous assurer que vous avez des droits d'accès (s'ils sont privés).