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

Benutzeravatar von Magpie
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.

    – Elster

    26. Mai 2020 um 11:53 Uhr


Der Überprüfen Sie, ob Sie wahrscheinlich scheitern:

int is_writing_gitmodules_ok(void)
{
        struct object_id oid;
        return file_exists(GITMODULES_FILE) ||
                (get_oid(GITMODULES_INDEX, &oid) < 0 && get_oid(GITMODULES_HEAD, &oid) < 0);
}

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:

Sehen bbe3165 übergeben (23. Juli 2021) von Jeff König (peff).
Sehen 8c8195e übergeben, übertrage a98b02c, begehen 0008d12 (10. Juli 2021) und 84069fc übernehmen (06.07.2021) von Atharva Raykar (tfidfwastaken).
(Zusammengeführt von Junio ​​C. Hamano — gitster In 10f57e0 übernehmen04.08.2021)

submodule: den Nachrichten ‘fatal’ voranstellen

Unterzeichnet von: Atharva Raykar
Betreut von: Christian Couder
Betreut von: Shourya Shukla

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.

Und:

submodule--helper: Unterbefehl add-clone einführen

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.

1447600cookie-checkErhalten Sie „Bitte stellen Sie sicher, dass sich die .gitmodules-Datei in der Arbeitsstruktur befindet“, wenn Sie den Befehl „git submodule add“ ausführen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy