J'avais un problème similaire, mais je m'étais mis dans une impasse avec les outils GUI.
J'avais un sous-projet avec quelques fichiers dedans que j'avais jusqu'à présent simplement copié autour au lieu de vérifier dans leur propre repo git. J'ai créé un repo dans le sous-dossier, j'ai été capable de commiter, pousser, etc. Mais dans le repo parent, le sous-dossier n'était pas traité comme un sous-module, et ses fichiers étaient toujours suivis par le repo parent - pas bon.
Pour me sortir de ce pétrin, je devais dire à Git d'arrêter de suivre le sous-dossier (sans supprimer les fichiers) :
proj> git rm -r --cached ./ui/jslib
Ensuite, j'ai dû lui dire qu'il y avait un sous-module à cet endroit (ce que vous ne pouvez pas faire si quelque chose à cet endroit est actuellement suivi par git) :
proj> git submodule add ./ui/jslib
Mise à jour
La manière idéale de gérer cette situation implique quelques étapes supplémentaires. Idéalement, le dépôt existant est déplacé dans son propre répertoire, sans modules git parents, validé et poussé, puis ajouté en tant que sous-module comme suit :
proj> git submodule add git@bitbucket.org:user/jslib.git ui/jslib
Cela clonera le dépôt git en tant que sous-module - ce qui implique les étapes de clonage standard, mais aussi plusieurs autres étapes de configuration plus obscures que git effectue en votre nom pour que ce sous-module fonctionne. La différence la plus importante est qu'il place un simple fichier .git à cet endroit, au lieu d'un répertoire .git, qui contient une référence de chemin vers l'endroit où se trouve le vrai répertoire git - généralement à la racine du projet parent .git/modules/jslib.
Si vous ne faites pas les choses de cette manière, elles fonctionneront bien pour vous, mais dès que vous commettez et poussez le parent, et qu'un autre développeur va tirer ce parent, vous venez de leur rendre la vie beaucoup plus difficile. Il sera très difficile pour eux de reproduire la structure que vous avez sur votre machine tant que vous avez un répertoire .git complet dans un sous-dossier d'un répertoire qui contient son propre répertoire .git.
Donc, move, push, git add submodule, est l'option la plus propre.