Wie füge ich Dateien in Git zum Pfad eines ehemaligen Submoduls hinzu?

Lesezeit: 2 Minuten

Wie fuge ich Dateien in Git zum Pfad eines ehemaligen
Chris B.

Ich habe ein Projekt, das früher ein Untermodul unter Pfad enthielt mysubmodule. Ich habe das neueste Git aus der Quelle (1.8.3-rc2) installiert und ausgeführt git submodule deinit mysubmodule. Die habe ich dann gelöscht .gitmodules Datei und die Änderung übernommen. Die habe ich auch gelöscht .git Verzeichnis aus dem mysubmodule Mappe.

Ich möchte die Dateien aus übergeben mysubmodule jetzt direkt in mein Repo, aber git sagt, dass es keine Änderungen gibt. Wenn ich tippe git add mysubmodule es tut nichts. Wenn ich tippe git add mysubmodule/file.txt es sagt fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'

Ich habe auch festgestellt, dass beim Auschecken einer neuen Version des Repos eine mysubmodule Verzeichnis, obwohl keine .gitmodules Datei. Und läuft git submodule init gibt dir ein No submodule mapping found in .gitmodules for path 'mysubmodule' Error.

Wie behebe ich das?

  • Haben Sie alle diese Schritte überprüft, um sicherzustellen, dass keine Teile des Submoduls herumliegen? Ich denke nicht deinit entfernt das Submodul vollständig. Es scheint, es einfach von Ihrem zu entfernen .git/config -Datei, als ob Sie ein Repo mit einem Submodul geklont hätten, aber noch nicht ausgeführt worden wären git init. Das ist etwas anderes, als das Submodul vollständig zu entfernen. Wenn dies der Fall ist, denkt Git immer noch, dass der Ordner ein Untermodul ist, ignoriert es aber.

    – Gary Fixler

    15. Mai 2013 um 21:57 Uhr


Wie fuge ich Dateien in Git zum Pfad eines ehemaligen
VonC

Denke immer noch mysubmodule ist ein Submodul, weil es im Index mit einem speziellen Modus “160000” eingetragen ist.
Siehe „Git-Submodul-Update nur anfänglich erforderlich?“ für mehr.
Um dies zu überprüfen, können Sie wie in dieser Antwort Folgendes tun:

 $ git ls-tree HEAD mysubmodule 
 160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398  mysubmodule 

Das hängt nicht von der Anwesenheit des ab .gitmodule Datei oder auf den Inhalt von mysubmodule.

Sie müssen diesen Eintrag zuerst aus dem Index entfernen:

 git rm --cached mysubmodule

Dann können Sie fortfahren.

  • git ls-tree HEAD mysubmodule brachte mir aber keine Ergebnisse git ls-files --stage | grep mysubmodule hat funktioniert. Referenz. Warum sollte das sein?

    – nzn

    8. August 2017 um 13:16 Uhr


  • @nzn Nicht sicher: Ich habe gerade beide getestet und sie funktionieren. Welche Git-Version verwendest du auf welchem ​​Betriebssystem?

    – VonC

    8. August 2017 um 13:28 Uhr

987940cookie-checkWie füge ich Dateien in Git zum Pfad eines ehemaligen Submoduls hinzu?

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

Privacy policy