J'essaie d'ajouter un sous-module qui existait déjà (référentiel distant git différent). Comme je n'avais pas cherché auparavant comment le faire correctement, je pense que j'ai bousillé mon référentiel et que j'ai besoin d'aide pour le réparer à nouveau.
J'ai déjà supprimé toutes les sections pertinentes des .gitmodules et .git/config en ce qui concerne les sous-modules que je veux supprimer. J'ai également vérifié qu'il n'y avait pas de répertoire de modules dans mon répertoire .git /.
Cependant, lorsque j'exécute la commande git rm --cached path_to_submodule
, le message suivant s'affiche:
fatal: pathspec 'path_to_submodule' ne correspond à aucun fichier
Comme la commande précédente échoue, lorsque j'essaie d'ajouter à nouveau le même sous-module avec les nouvelles définitions, en exécutant la commande git submodule add gituser@Host:repo.git
, le message suivant s'affiche:
'repo' existe déjà dans l'index
Le message ('repo' already exists in the index
) peut uniquement être affiché si "repo" existe toujours dans l'index (voir ce chapitre sur le sous-module ):
$ rm -Rf rack/
$ git submodule add [email protected]:schacon/rack.git rack
'rack' already exists in the index
You have to unstage the rack directory first. Then you can add the submodule:
$ git rm -r rack
$ git submodule add [email protected]:schacon/rack.git rack
Même si 'rack
' n'est pas un sous-module, s'il existe, cela empêcherait la déclaration d'un sous-module du même nom.
Si la sortie ajoutant un nouveau sous-module est:
'FolderName' already exists in the index
Astuce les prochaines commandes
git ls-files --stage
La sortie sera quelque chose de similaire à:
160000 d023657a21c1bf05d0eeaac6218eb5cca8520d16 0 FolderName
Ensuite, pour supprimer le conseil index de dossier:
git rm -r --cached FolderName
Essayez à nouveau d'ajouter le sous-module
Peut se produire, lors de la fusion avec une erreur, la suppression manuelle du dossier du sous-module, ou quelque chose d'autre, comme Hallileo Comet
dans le fichier .gitmodules
- supprimer les liens vers le sous-module (section entière avec le nom du sous-module)
dans le fichier .git\config
- supprimer les liens vers le sous-module, comme à l'étape précédente
dans le dossier .git\modules
- supprime le dossier avec le chemin relatif similaire au chemin relatif du module "problème"
s'assurer que ce dossier de sous-module n'existe plus
puis:
$ git submodule add -f --name <name> <git://path_1.git> <path_2>
où: nom - nom du sous-module comme vous le souhaitez, peut être égal à votre nom repo
; - chemin d'accès au dépôt source du sous-module (c'est-à-dire - github, etc.), - chemin relatif au dossier où le sous-module résidera
ceci nous permet d’ajouter un sous-module dans path ou avec un nom qui existe toujours dans l’index, mais pas naturellement en vie.
je n'ai trouvé aucune méthode pour supprimer ces liens morts de l'index, mais lorsque forcé
'submodules/uasdk-clib' existe déjà dans l'index
git rm -r --cached submodules/uasdk-clib
sous-module git add -b china/release/16.8.0 -f ssh: //[email protected] sous-modules/uasdk-clib