it-swarm.com.de

Git-Submodul add: "Ein Git-Verzeichnis wird lokal gefunden"

Ich versuche tatsächlich zu lernen, wie man git verwendet, einschließlich der Unterbefehle "git submodule" . Ich habe bereits einen Server eingerichtet, auf dem ich Host, Push und Pull von git-Repositorys mithilfe von ssh ..__ dieser Server ein Hauptgit-Repository "Travail", in das ich alle meine Projekte als Submodule setzen möchte.

In meinem Travail-Repository habe ich bereits ein Projekt von mir als Submodul bei tools/libft: .__ hinzugefügt. Ich bin in der Lage, dieses Submodul zu entwickeln, zu pushen und zu ziehen.

Wenn ich jedoch versuche, ein anderes Submodul (mit dem Namen fdf von fdf.git auf meinem Server) hinzuzufügen, erhalte ich folgendes Problem:

git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf

Ein git-Verzeichnis für 'projets/fdf' wird lokal mit Remote (s) gefunden: Origin ssh: //[email protected]: XXXXX/opt/git/fdf.git Wenn Sie dieses lokale Git-Verzeichnis wiederverwenden möchten, anstatt erneut aus .__ zu klonen. ssh: //XXX.XXX.XXX.XXX: XXXXX/opt/git/fdf.git Verwenden Sie die Option "--force". Wenn das lokale Git-Verzeichnis nicht das richtige Repo ist oder Sie sind sich nicht sicher, was dies bedeutet, wählen Sie einen anderen Namen mit der Option '--name'.

In projets/ gibt es eigentlich kein Unterverzeichnis

Ich las in einem anderen Thread, dass ich git Submodule Sync verwenden oder die .gitmodules-Datei bearbeiten sollte, in der sich die URL zum Origin-Repository meines Submoduls geändert haben könnte.

Meine .gitmodules-Datei enthält jedoch nur die Informationen zu meinem ersten Submodul (tools/libft), nicht zu projets/fdf:

[submodule "tools/libft"]
    path = tools/libft
    url = ssh://[email protected]:XXXXX/opt/git/libft.git

Als französischer Student hätte ich in der englischen Dokumentation etwas vermissen können, aber ich habe gesucht und verstehe nicht, warum ich dieses Problem bekomme.

Ich würde mich freuen, wenn ich eine Lösung bekommen würde, aber auch eine Erklärung wäre hilfreich.

111
vmonteco

Ich kam zu diesem SO Post und versuchte, ein Submodul mit demselben Pfad wie ein Submodul hinzuzufügen, das ich kürzlich gelöscht habe.

Dies hat letztendlich für mich funktioniert ( dieser Artikel hat viel geholfen ):

Wenn Sie git rm --cached path_to_submodule (kein nachstehender Schrägstrich) sowie rm -rf path_to_submodule noch nicht ausgeführt haben, tun Sie das!

Dann:

  1. Löschen Sie die relevanten Zeilen aus der .gitmodules-Datei. z.B. lösche diese:

    [submodule "path_to_submodule"] path = path_to_submodule url = https://github.com/path_to_submodule

  2. Löschen Sie den relevanten Abschnitt aus .git/config. z.B. lösche diese:

    [submodule "path_to_submodule"] url = https://github.com/path_to_submodule

  3. rm -rf .git/modules/path_to_submodule

Dann können Sie endlich:

git submodule add https://github.com/path_to_submodule

244
jbmilgrom

ich habe die Lösung von Jbmilgrom ausprobiert, insbesondere git rm --cache, und das hat auch für mich nicht funktioniert, da das Verzeichnis/Submodul nicht vorhanden war. Was für mich funktioniert hat war:

  1. rm -rf .git/modules/blah
  2. git submodule add git://path.to.new 

Ich habe dies getan, nachdem ich --force innerhalb der git submodule-Befehle und rm aller anderen Verzeichnisse ausprobiert hatte, Pushs an Master usw. Das Verzeichnis war nicht vorhanden und es gab keinen Grund für den Cache. In .git/modules stellt sich heraus, dass der Fehler lag.

33
pjammer

Sie haben Ihren 'projets/fdf' möglicherweise von der Festplatte gelöscht, aber Ihr Git-Repository hat es noch Verwenden Sie git rm -rf projets/fdf, um es aus Git zu entfernen, und bestätigen Sie die Änderungen. Danach können Sie diesen Ordner als Submodul hinzufügen.

15
bredikhin

Wenn Sie das Untermodulverzeichnis bereits wie ich gelöscht haben, folgen Sie den restlichen Anweisungen von jbmilgrom. Der Schlüssel ist rm -rf .git/modules/path_to_submodule, aber fahren Sie fort und sichern Sie Ihr gesamtes übergeordnetes Repo-Verzeichnis zuerst.

Wenn Sie nur ein Submodul hatten, löschen Sie einfach .gitmodules

11
Dmitri R117

Diese beiden Befehle funktionieren für mich.

rm path/to/submodule -rf
rm .git/modules/path/to/module -rf
0
W.Perrin

Ich habe diese Antworten ausprobiert und sie haben für mich nicht funktioniert. Das einzige, was für mich funktionierte, war, mein Eltern-Repo zu löschen und es wieder runterzuziehen. Hoffe das hilft jemandem 

0
Gerard Simpson