J'ai eu un problème similaire, mais je me suis peint dans un coin avec des outils GUI.
J'avais un sous-projet avec quelques fichiers que je venais de copier jusqu'à présent au lieu de vérifier dans leur propre dépôt git. J'ai créé un dépôt dans le sous-dossier, j'ai pu valider, pousser, etc. très bien. Mais dans le référentiel parent, le sous-dossier n'était pas traité comme un sous-module, et ses fichiers étaient toujours suivis par le référentiel parent - pas bon.
Pour sortir de ce bordel, j'ai dû 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 (ce que vous ne pouvez pas faire si quelque chose est actuellement suivi par git):
proj> git submodule add ./ui/jslib
Mettre à jour
La façon idéale de gérer cela implique quelques étapes supplémentaires. Idéalement, le référentiel existant est déplacé vers son propre répertoire, exempt de tout module git parent, validé et poussé, puis ajouté en tant que sous-module comme:
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 également plusieurs autres étapes de configuration plus obscures que git prend en votre nom pour faire fonctionner ce sous-module. La différence la plus importante est qu'il y place un simple fichier .git, au lieu d'un répertoire .git, qui contient une référence de chemin vers l'emplacement du vrai répertoire git - généralement à la racine du projet parent .git / modules / jslib.
Si vous ne faites pas les choses de cette façon, cela fonctionnera bien pour vous, mais dès que vous vous engagez et poussez le parent, et qu'un autre dev va tirer ce parent, vous venez de rendre leur vie beaucoup plus difficile. Il leur sera très difficile de répliquer 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, déplacer, pousser, ajouter un sous-module, c'est l'option la plus propre.