Gibt es eine einfache Möglichkeit, ein Git-Submodul-Verzeichnis umzubenennen (außer den gesamten Vorgang des Löschens und erneuten Hinzufügens mit einem neuen Zielnamen zu durchlaufen) ?
Und wenn wir schon dabei sind, warum kann ich im übergeordneten Verzeichnis einfach nicht Folgendes tun: git mv old-submodule-name new-submodule-name
git
git-submodules
Lars Tackmann
quelle
quelle
.gitmodules
manuell aktualisieren, wenn Sie ein Submodul verschieben. siehe meine Antwort untennpm
zeigt, wie einfach funktioniert. Eines Tages ... vielleicht ... wird jemand ... es umschreiben ... in der Zwischenzeit ...Antworten:
Ich fand folgenden Workflow funktionierend:
mv oldpath newpath
git rm oldpath
git add newpath
git submodule sync
Hinweis: Bei diesem Ansatz werden der Index und die Git-Module in 2018-Versionen von GIT nicht ordnungsgemäß aktualisiert.
Hinweis: Möglicherweise können Sie dies jetzt tun
git mv oldpath newpath
, wie in der Antwort von VonC ausgeführt . (Stellen Sie sicher, dass Sie die neueste Version von git verwenden.)quelle
git add newpath
Verwenden Sie keinen.git/modules/SUBMODULE/config
Datei auch so bearbeiten , dass sie wiederworktree
auf das richtige Verzeichnis verweist.2.13.1
. Aber einfach zu tungit mv old new
funktioniert wie ein Zauber. Ich muss nur Git Commit ausführen, um die Änderungen abzuschließen.Git1.8.5 (Oktober 2013) sollte den Prozess vereinfachen . Mach einfach ein:
Weitere Informationen finden Sie in commit 0656781fadca1 :
Git 2.9 (Juni 2016) wird sich verbessern
git mv
für das Submodul :Siehe Commit a127331 (19. April 2016) von Stefan Beller (
stefanbeller
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 9cb50a3 , 29. April 2016)quelle
fatal: source directory is empty, source=my_source, destination=my_destination
. Ich werde es erneut versuchen, wenn 1.8.5 eine stabile Version hat.Die richtige Lösung ist:
Quelle: Git-Submodul umbenennen
quelle
Ich habe nur ein paar der oben vorgeschlagenen ausprobiert. Ich renne:
Ich fand es am besten, das Submodul zu de-initieren, das Verzeichnis zu entfernen und ein neues Submodul zu erstellen.
Zumindest hat das bei mir am besten funktioniert. YMMV!
quelle
Es ist nicht möglich, es umzubenennen. Sie müssen es also zuerst entfernen (
deinit
) und erneut hinzufügen.Also nach dem Entfernen:
Sie können auch die Verweise darauf überprüfen und entfernen in:
.gitmodules
.git/config
.git/modules/<name>
(am besten, um ein Backup zuconfig
erstellen ), da jeder Ordner eine Datei enthält, in der der Verweis auf seinen Ordner gespeichert istworktree
Führen Sie dann Ihre Änderungen durch, indem Sie Änderungen an Ihrem Repo vornehmen, indem Sie:
und überprüfen Sie noch einmal, ob Sie keine offenen Fragen haben, indem Sie:
Jetzt können Sie das Git-Submodul erneut hinzufügen:
quelle
Bearbeiten Sie die .gitmodules-Datei, um das Submodul umzubenennen, und benennen Sie dann das Submodulverzeichnis um.
Ich denke, Sie müssen möglicherweise eine
git submodule sync
Nachuntersuchung durchführen, aber ich bin derzeit nicht in der Lage, dies zu überprüfen.quelle
MacOs : Wenn ich die VonC-Lösung verwenden möchte , um den Submodulordner
Common
in Kleinbuchstaben zu ändern :Ich bekomme
Lösung - Verwenden Sie einen temporären Ordnernamen und verschieben Sie ihn zweimal:
Das ist alles :)
quelle