Es ist uns passiert, dass wir 2 Repositorys für 2 Projekte erstellt haben, die so gekoppelt waren, dass es keinen Sinn machte, sie zu trennen, also haben wir sie zusammengeführt.
Ich werde zuerst zeigen, wie die Hauptzweige in jedem Zweig zusammengeführt werden, und dann erkläre ich, wie Sie dies auf alle Zweige ausweiten können, die Sie haben. Ich hoffe, es hilft Ihnen.
Wenn Sie das Submodul zum Laufen gebracht haben und es in ein vorhandenes Verzeichnis konvertieren möchten, haben Sie folgende Möglichkeiten:
git clone project_uri project_name
Hier machen wir einen sauberen Klon, um zu arbeiten. Für diesen Prozess müssen Sie die Submodule nicht initialisieren oder aktualisieren. Überspringen Sie sie einfach.
cd project_name
vim .gitmodules
Bearbeiten Sie .gitmodules
mit Ihrem bevorzugten Editor (oder Vim), um das Submodul zu entfernen, das Sie ersetzen möchten. Die Linien, die Sie entfernen müssen, sollten ungefähr so aussehen:
[submodule "lib/asi-http-request"]
path = lib/asi-http-request
url = https://github.com/pokeb/asi-http-request.git
Nach dem Speichern der Datei,
git rm --cached directory_of_submodule
git commit -am "Removed submodule_name as submodule"
rm -rf directory_of_submodule
Hier entfernen wir die Submodul-Beziehung vollständig, damit wir das andere Repo an Ort und Stelle zum Projekt bringen können.
git remote add -f submodule_origin submodule_uri
git fetch submodel_origin/master
Hier holen wir das Submodul-Repository zum Zusammenführen.
git merge -s ours --no-commit submodule_origin/master
Hier starten wir einen Zusammenführungsvorgang der beiden Repositorys, stoppen jedoch vor dem Festschreiben.
git read-tree --prefix=directory_of_submodule/ -u submodule_origin/master
Hier senden wir den Inhalt des Masters im Submodul an das Verzeichnis, in dem er sich befand, bevor ein Verzeichnisname vorangestellt wurde
git commit -am "submodule_name is now part of main project"
Hier schließen wir den Vorgang ab, indem wir die Änderungen in der Zusammenführung festschreiben.
Nachdem Sie dies abgeschlossen haben, können Sie einen Push ausführen und erneut mit einem anderen Zweig zum Zusammenführen beginnen. Überprüfen Sie einfach den Zweig in Ihrem Repository, der die Änderungen erhält, und ändern Sie den Zweig, den Sie in die Zusammenführungs- und Lesebaumoperationen einbringen.
git submodule deinit
, siehe meine Antwort unten