Avevo un problema simile, ma mi ero dipinto in un angolo con gli strumenti della GUI.
Avevo un sottoprogetto con alcuni file che avevo appena copiato, invece di controllare nel loro repository git. Ho creato un repository nella sottocartella, sono stato in grado di eseguire il commit, il push, ecc. Ma nel repository principale la sottocartella non è stata trattata come un sottomodulo e i suoi file erano ancora monitorati dal repository principale - non va bene.
Per uscire da questo casino ho dovuto dire a Git di interrompere il tracciamento della sottocartella (senza cancellare i file):
proj> git rm -r --cached ./ui/jslib
Quindi ho dovuto dire che c'era un sottomodulo lì (che non puoi fare se qualcosa è attualmente monitorato da Git):
proj> git submodule add ./ui/jslib
Aggiornare
Il modo ideale per gestire questo comporta un paio di passaggi in più. Idealmente, il repository esistente viene spostato nella propria directory, libero da qualsiasi modulo genitore git, sottoposto a commit e inviato, quindi aggiunto come sottomodulo come:
proj> git submodule add git@bitbucket.org:user/jslib.git ui/jslib
Ciò clonerà il repository git come sottomodulo, il che comporta i passaggi standard di clonazione, ma anche molti altri passaggi di configurazione più oscuri che Git prende per conto dell'utente per far funzionare quel sottomodulo. La differenza più importante è che posiziona lì un semplice file .git, invece di una directory .git, che contiene un riferimento al percorso in cui vive la directory git reale, generalmente nella radice del progetto genitore .git / modules / jslib.
Se non fai le cose in questo modo funzioneranno bene per te, ma non appena ti impegni e spingi il genitore, e un altro dev va a prenderlo, hai reso la loro vita molto più dura. Sarà molto difficile per loro replicare la struttura che hai sulla tua macchina fintanto che hai una directory .git completa in una sottocartella di una directory che contiene la sua directory .git.
Quindi, spostare, spingere, git aggiungere sottomodulo, è l'opzione più pulita.