Ci è successo che abbiamo creato 2 repository per 2 progetti che erano così accoppiati da non avere senso separarli, quindi li abbiamo uniti.
Mostrerò come unire prima i rami master in ciascuno e poi spiegherò come estenderlo a tutti i rami che hai, spero che ti aiuti.
Se il sottomodulo funziona e si desidera convertirlo in una directory in atto, è possibile:
git clone project_uri project_name
Qui facciamo un clone pulito per funzionare. Per questo processo non è necessario inizializzare o aggiornare i sottomoduli, quindi saltalo.
cd project_name
vim .gitmodules
Modifica .gitmodules
con il tuo editor preferito (o Vim) per rimuovere il sottomodulo che intendi sostituire. Le linee che devi rimuovere dovrebbero avere un aspetto simile al seguente:
[submodule "lib/asi-http-request"]
path = lib/asi-http-request
url = https://github.com/pokeb/asi-http-request.git
Dopo aver salvato il file,
git rm --cached directory_of_submodule
git commit -am "Removed submodule_name as submodule"
rm -rf directory_of_submodule
Qui rimuoviamo completamente la relazione del sottomodulo in modo da poter creare portare l'altro repository sul progetto sul posto.
git remote add -f submodule_origin submodule_uri
git fetch submodel_origin/master
Qui prendiamo il repository del sottomodulo da unire.
git merge -s ours --no-commit submodule_origin/master
Qui iniziamo un'operazione di unione dei 2 repository, ma ci fermiamo prima del commit.
git read-tree --prefix=directory_of_submodule/ -u submodule_origin/master
Qui inviamo il contenuto del master nel sottomodulo alla directory in cui si trovava prima del prefisso di un nome di directory
git commit -am "submodule_name is now part of main project"
Qui completiamo la procedura eseguendo il commit delle modifiche nell'unione.
Al termine, è possibile eseguire il push e ricominciare con qualsiasi altro ramo da unire, è sufficiente controllare il ramo nel proprio repository che riceverà le modifiche e modificare il ramo che si sta portando nelle operazioni di unione e lettura.
git submodule deinit
, vedi la mia risposta di seguito