493 Stimmen

Wie kann man ein Git-Submodul aufheben?

Was sind die besten Praktiken für die Aufhebung der Submodulierung eines Git-Submoduls, um den gesamten Code zurück in das Kern-Repository zu bringen?

2voto

brokenescape Punkte 21

Im Haupt-Repo

  • git rm --cached [submodules_repo]
  • git commit -m "Untermodule entfernt."
  • git push origin [master]

Im Untermodul-Repositorium

  • rm -rf .git

Wiederum Haupt-Repo

  • git add [submodules_repo]
  • git add .
  • git commit -m "Submodules repo added into main."
  • git push origin [master]

0voto

Rian Wouters Punkte 1

Ich fand es bequemer, (auch?) lokale Commit-Daten aus dem Submodul zu holen, weil ich sie sonst verlieren würde. (Könnte sie nicht pushen, da ich keinen Zugriff auf die Fernbedienung habe). Also fügte ich submodule/.git als remote_origin2 hinzu, holte mir die Commits und führte sie von diesem Zweig zusammen. Ich bin mir nicht sicher, ob ich das Submodul remote noch als Ursprung benötige, da ich noch nicht genug mit Git vertraut bin.

0voto

CommaToast Punkte 10365

Hier ist, was ich am besten und einfachsten fand.

Im Submodul-Repo, von HEAD, das Sie in das Haupt-Repo zusammenführen möchten:

  • git checkout -b "mergeMe"
  • mkdir "foo/bar/myLib/" (identischer Pfad wie der, in dem Sie die Dateien im Haupt-Repository haben wollen)
  • git mv * "foo/bar/myLib/" (alle in den Pfad verschieben)
  • git commit -m "ready to merge into main"

Zurück im Haupt-Repo nach dem Entfernen des Submoduls und dem Löschen des Pfades "foo/bar/myLib":

  • git merge --allow-unrelated-histories SubmoduleOriginRemote/mergeMe

fertig

erhaltene Geschichten

kein Problem


Beachten Sie, dass dies fast identisch mit einigen anderen Antworten ist. Aber das setzt voraus, dass Sie ein eigenes Submodul-Repo besitzen. Auch dies macht es einfach, zukünftige Upstream-Änderungen für Submodule zu erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X