Ne pouvez pas ajouter de git sous-module lorsqu'il est spécifié comme un chemin relatif
J'essaye d'ajouter un sous-module de mon repo git, et j'obtiens cette erreur en retour:
remote origin does not have a url defined in .git/config
des idées sur ce que cela pourrait être? J'ai essayé de googler pour elle, mais seulement un vague lien vient.
Je suis en train de faire ceci:
git submodule add ../extern/Lib1 lib
Je m'attends à ce que cela créer un sous-module lib/Lib1
Je suis conscient que cela ne fera que créer une référence et que je puis mettre à jour/init (pas de cristal clair sur cette partie, n'ont pas obtenu ce que de loin; je suis en train d'apprendre le sous-module de commande).
- Tout juste de terminer ma réponse avec d'autres suggestions
- Je pense que le chemin d'accès absolu fonctionne ici uniquement parce que votre
extern/Lib1
repo Git ... n'est pas une "télécommande d'origine ne dispose pas d'une url définie dans.git/config
" ;). Certains enquête dans le .git/config est dans l'ordre. - pas sûr de ce que tu veux dire. J'ai juste regardé extern/Lib1 de l' .git/config et tout ce qu'elle a, c'est la [base] de la section: repositoryformatversion=0,filemode=true,nu=false,legalrefupdates=true
- Juste un exemple au sujet de exactement où cette "distance de l'origine" devrait être définie. Voir mon édité réponse.
- Votre dernier commentaire m'a fait relire le git sous-module page de man. J'ai édité ma réponse pour un plus emplacement exact de la
.git/config
fichier.
Vous devez vous connecter pour publier un commentaire.
Ne
../extern/Lib1
se référer à un dépôt Git?Si elle ne le fait pas, Git ne saurais pas eu le repo Git url de son
.gitmodule
Aussi, essayez de:
lib
pas déjà existant (même vide)Quelques bonnes sources sur submodules sont:
et bien sûr
Puisque seul le chemin d'accès absolu travaille ici, cela signifie que le chemin d'accès relatif besoin d'une référence pour être comparées.
Cette référence est la "distance de l'origine", ce qui devrait être dans votre
DirName/NewRepo_withSubmodules/.git/config
fichier, comme ceci:Si vous n'avez que l'article en
../DirName/NewRepo_withSubmodules/.git/config
fichier, vous devez être en mesure d'ajouter../Extern/Lib1
comme un sous-module à l'aide d'un chemin d'accès relatif.Tous les ci-dessus est inspiré de la section suivante de l'git sous-module de la page de manuel:
Donc si
NewRepo_withSubmodules
est un repo Git local qui vient d'être créé (et n'a pas "d'origine"), une artificielle "à distance de l'origine" devrait être défini (même si l'origine des points à lui-même), si ce n'est pour permettre une url relative pour d'autres sous-module dépôts à être utilisé.Git 2.13 (T2 2017) permettra d'améliorer la détection de l'origine par défaut d'un sous-module.
Voir s'engager d1b3b81 (25 Février 2017) par Stefan Beller (
stefanbeller
).(Fusionnés par Junio C Hamano --
gitster
-- dans s'engager ae900eb, 10 mars 2017)Comme maintenant documenté:
Git 2.20 (T4 2018) améliore le chemin d'accès local de soutien pour les submodules.
Voir s'engager e0a862f (16 octobre 2018) par Stefan Beller (
stefanbeller
).(Fusionnés par Junio C Hamano --
gitster
-- dans s'engager 3fc8522, 06 Nov 2018).git/config
l'emplacement du fichier. Voir mon édité réponse.J'ai essayé la même chose, et a trouvé le " semble avoir fonctionné:
J'ai (sur windows):
analysis1.tex ... analysisN.tex
contiennent des idées que je n'ai pas travaillé sur encore ('talons, par exemple), etanalysis1/
etanalysis2/
sont des choses que je suis en train de (et donc du code, tex, ... en eux). Une fois que je me déplace pour travailler sur d'autres analyses, ils seront déplacés à leurs propres dossiers et donc de leurs propres dépôts.Ce que j'ai fait (dans git bash dans les analyses):
Cela semble avoir fonctionné.
D:/phd/analyses/.git/config
semble comme il se doit, et.gitmodules
ressemble:Ce qui concerne,
Simon Knapp
self
sur Internet.[852]$ git submodule add -b myBranch self:../relativeRepo Cloning into relativeRepo...
ssh: impossible de résoudre le nom d'hôte de l'auto: nodename ni nomserveur fourni, ou ne sait pas fatal: L'extrémité distante raccroché à l'improviste` Clone de "soi:../relativeRepo' en sous-module path 'relativeRepo' a échoué(J'ai résumé juste la solution ici. Le crédit va à VonC.)
Dans le contenant référentiel (dire
containing.git/
),git
interprète des chemins relatifs par rapport à laorigin
à distance, qui n'est pas définie. Nous voulons qu'elle soit par rapport à lacontaining.git/
répertoire, afin d'exécuter(Je ne sais pas pourquoi il est
..
plutôt que.
.)Maintenant, vous pouvez ajouter le sous-module:
../extern/Lib1
dans le chemin d'accès local. J'ai eu à fairegit remote rename myrem origin
, puisgit submodule add ../extern/Lib1 lib
, puisgit remote rename origin myrem
etgit submodule foreach git remote rename origin myrem