Erhalten Sie „Bitte stellen Sie sicher, dass sich die .gitmodules-Datei in der Arbeitsstruktur befindet“, wenn Sie den Befehl „git submodule add“ ausführen
Lesezeit: 5 Minuten
Elster
Ich bin neu bei Git und überlege gerade, einige große Projekte von Mercurial zu portieren. Wir haben ein Root-Projekt, das nur die Verweise auf alle externen Projekte (Submodule in Git) enthält. Ich versuche, dies in Git neu zu erstellen.
Ich habe ein Projekt (foo) in githib importiert. Ich habe ein neues leeres Projekt (Root) erstellt und es lokal geklont. Ich möchte Foo als Submodul mit hinzufügen
git submodule add https://github.com/.../foo.git
aus /c/Work/GitHub/root (Master)
aber ich erhalte immer wieder “Bitte stellen Sie sicher, dass sich die .gitmodules-Datei im Arbeitsbaum befindet”.
Wenn Sie sich die Dokumentation ansehen, sollte die erste Ausführung dieses Befehls die .gitmodules-Datei erstellen, aber ich erhalte diesen Fehler, selbst wenn ich ihn von Hand erstelle. Die Suche nach diesem Fehler bei Google gibt nur die Quelldateien mit dem Fehler zurück, aber keine Erklärung dafür, warum ich ihn bekomme. Ich nehme an, es ist nur mein schlechtes Verständnis von Git.
Was mache ich falsch?
EDIT: Habe ich auch probiert.
mkdir test
cd test
git init
git submodule add https://github.com/.../foo.git
Ich bekomme den gleichen Fehler.
Bitte geben Sie ein vollständiges Beispiel mit genauen Befehlen an. Wählen Sie bei Bedarf ein öffentliches Test-Repository aus, das als Untermodul behandelt werden soll.
– Jo
26. Mai 2020 um 11:28 Uhr
OK gefunden, sieht aus wie eine beschädigte Installation von Git. Ich habe es komplett entfernt und neu installiert und das Problem ist weg. Danke, dass Sie sich das mit mir ansehen.
Das bedeutet, dass die Datei entweder lokal existiert oder sie nicht im Aufmarschgebiet oder im Strom vorhanden sind HEAD begehen.
Sie haben verwendet git addaber dann aus dem Arbeitsverzeichnis gelöscht.
Verwenden git restore .gitmodules (oder ähnlich), um die vorhandene Datei wieder in Ihr Arbeitsverzeichnis zu bringen.
Prost auf die Antwort, ich habe noch kein Git-Add auf diesem Repo ausgeführt. Ich führe den Befehl trotzdem aus, bekomme aber ‘error: pathpec ‘.gitmodules’ does not match any file(s) known to git ‘
– Elster
26. Mai 2020 um 10:03 Uhr
git restore -s HEAD .gitmodules wäre der Befehl, um es aus dem letzten Commit abzurufen.
– Jo
26. Mai 2020 um 10:36 Uhr
Derselbe Fehler, mein Repo hat nur einen Commit von dem Zeitpunkt, als ich es auf Github erstellt habe. Es hat nur eine Ignore-Datei. Ich habe es lokal geklont und den Submodulbefehl als erste Operation darauf ausgeführt.
– Elster
26. Mai 2020 um 11:10 Uhr
Wenn es hilft, habe ich gerade ein neues Repo erstellt, einen Testordner erstellt, git init ausgeführt und dann den Befehl submodule, erhalte den gleichen Fehler.
– Elster
26. Mai 2020 um 11:12 Uhr
Sie haben wahrscheinlich Ihre entfernt .gitmodule oder haben Änderungen an .gitmodule inszeniert.
Versuchen Sie, die Datei mit wiederherzustellen git restore .gitmodule.
Wenn das nicht hilft, versuchen Sie es zu überprüfen git status um sicherzustellen, dass nichts inszeniert wird; sonst laufen git reset .gitmodule.
Ein Hard-Reset zB auf den letzten Commit oder das Commit aller Änderungen löste das Problem für mich.
Ich denke, die Nachricht sollte in diesem Fall so etwas wie “commit your changes first” oder so lauten.
Mit meiner Git-Installation ist etwas nicht in Ordnung. Ich habe es deinstalliert und neu installiert, der Fehler war weg.
In Anbetracht der aktuellen Version von git-submodule.sh scheitert an:
if ! git submodule--helper config --check-writeable >/dev/null 2>&1
Wenn es möglich war, hatten Sie einen Prozess, der Sie im Griff hatte .gitmodulesverhindert jede “git submodule add” Befehl, um es zu ändern.
Beachten Sie, dass sich dies mit Git 2.33 (Q3 2021) mit der Neufassung von „git submodule“(Mann) in C, was Auswirkungen hat git submodule add:
Der Standard die() Funktion, die in C-Code verwendet wird, stellt allen an sie übergebenen Nachrichten das Präfix ‘fatal: ‘ voran.
Das passiert bei der nicht die verwendet in ‘git-submodule.sh’.
Lassen Sie uns jeder Shell-Die-Meldung »fatal:« voranstellen, damit die Fehlermeldungen bei der Konvertierung in C-Code dieselben bleiben wie vor der Konvertierung.
Beachten Sie, dass die Shell-Version von die wird mit Fehlercode 1 beendet, während die C-Version mit Fehlercode 128 beendet wird. In der Praxis ändert dies kein Verhalten, da keine Funktionalität in ‘submodule add’ und ‘submodule update’ auf den Wert des Exit-Codes angewiesen ist.
Unterzeichnet von: Atharva Raykar Betreut von: Christian Couder Betreut von: Shourya Shukla Basierend auf Patch-by: Shourya Shukla Basierend auf Patch-by: Prathamesh Chavan Unterstützt von: Đoàn Trần Công Danh
Lassen Sie uns ein neues hinzufügen “add-clone” Unterbefehl zu git submodule--helper mit dem Ziel, einen Teil des Shell-Codes in zu konvertieren git-submodule.sh bezüglich git submodule add(Mann) in C-Code.
Dieser neue Unterbefehl klont das hinzuzufügende Repository und checkt es in den entsprechenden Zweig aus.
Dies soll eine treue Bekehrung sein, die das Verhalten von ‘cmd_add()‘Skript unverändert.
Nur für den Fall, dass noch jemand dieses Problem hat. Mit meiner Git-Installation ist etwas nicht in Ordnung. Ich habe es deinstalliert und neu installiert, der Fehler war weg.
14476000cookie-checkErhalten Sie „Bitte stellen Sie sicher, dass sich die .gitmodules-Datei in der Arbeitsstruktur befindet“, wenn Sie den Befehl „git submodule add“ ausführenyes
Bitte geben Sie ein vollständiges Beispiel mit genauen Befehlen an. Wählen Sie bei Bedarf ein öffentliches Test-Repository aus, das als Untermodul behandelt werden soll.
– Jo
26. Mai 2020 um 11:28 Uhr
OK gefunden, sieht aus wie eine beschädigte Installation von Git. Ich habe es komplett entfernt und neu installiert und das Problem ist weg. Danke, dass Sie sich das mit mir ansehen.
– Elster
26. Mai 2020 um 11:53 Uhr