Wie kann ich ein Git-Submodul entfernen?
Übrigens, gibt es einen Grund, warum ich nicht einfach git submodule rm whatever
?
Wie kann ich ein Git-Submodul entfernen?
Übrigens, gibt es einen Grund, warum ich nicht einfach git submodule rm whatever
?
Im modernen Git (ich schreibe dies im Jahr 2022, mit einer aktualisierten git
Installation), ist dies nun viel einfacher geworden:
git rm <path-to-submodule>
und verpflichten sich .Dies entfernt den Dateibaum bei <path-to-submodule>
und der Eintrag des Submoduls in der Datei .gitmodules
Datei. D.h. werden alle Spuren des Submoduls in Ihrem eigentlichen Repository entfernt.
Als der Arztbrief jedoch die .git
dir des Submoduls wird beibehalten (in der modules/
Verzeichnis des Hauptprojekts .git
dir), " um das Auschecken vergangener Übertragungen zu ermöglichen, ohne dass diese aus einem anderen Repository geholt werden müssen ".
Wenn Sie diese Informationen dennoch entfernen möchten, löschen Sie das Verzeichnis des Submoduls manuell in .git/modules/
und entfernen Sie den Eintrag des Submoduls in der Datei .git/config
. Diese Schritte können mit den folgenden Befehlen automatisiert werden
rm -rf .git/modules/<path-to-submodule>
undgit config --remove-section submodule.<path-to-submodule>
.Ältere Community-Wiki-Anleitungen:
Über die Seite Git-Submodul-Anleitung :
Um ein Submodul zu entfernen, müssen Sie Folgendes tun:
.gitmodules
Datei..gitmodules
Änderungen:git add .gitmodules
.git/config
.git rm --cached path_to_submodule
(ohne abschließenden Schrägstrich)..git
Verzeichnis:rm -rf .git/modules/path_to_submodule
git commit -m "Removed submodule <name>"
rm -rf path_to_submodule
Siehe auch : alternative Schritte unten .
Die meisten Antworten auf diese Frage sind veraltet, unvollständig oder unnötig komplex.
Ein Submodul, das mit git 1.7.8 oder neuer geklont wurde, hinterlässt höchstens vier Spuren von sich in Ihrem lokalen Projektarchiv. Der Prozess zum Entfernen dieser vier Spuren wird durch die drei folgenden Befehle beschrieben:
# Remove the submodule entry from .git/config
git submodule deinit -f path/to/submodule
# Remove the submodule directory from the superproject's .git/modules directory
rm -rf .git/modules/path/to/submodule
# Remove the entry in .gitmodules and remove the submodule directory located at path/to/submodule
git rm -f path/to/submodule
Einfache Schritte
git config -f .git/config --remove-section submodule.$submodulename
git config -f .gitmodules --remove-section submodule.$submodulename
git rm --cached $submodulepath
rm -rf $submodulepath
rm -rf .git/modules/$submodulename
Bitte beachten: $submodulepath
keine führenden oder abschließenden Schrägstriche enthält.
Hintergrund
Wenn Sie das tun git submodule add
fügt er sie nur zu .gitmodules
aber sobald du es getan hast git submodule init
fügte sie hinzu .git/config
.
Wenn Sie also die Module entfernen möchten, aber in der Lage sein wollen, sie schnell wiederherzustellen, dann tun Sie genau dies:
git rm --cached $submodulepath
git config -f .git/config --remove-section submodule.$submodulepath
Es ist eine gute Idee, Folgendes zu tun git rebase HEAD
erste und git commit
am Ende, wenn Sie dies in ein Skript einfügen.
Sehen Sie sich auch an eine Antwort auf Kann ich ein Git-Submodul entpacken? .
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.