Ein bestimmtes Repo kann nicht als Submodul hinzugefügt werden

725
Dean

Ich wechsle zur Verwendung von Submodulen für meine Vim-Plugins. Der übliche Weg dies zu tun ist:

$ git submodule add https://github.com/vim-scripts/a.vim bundle/a.vim Cloning into 'bundle/a.vim'... etc, etc 

Das funktioniert gut mit jedem Plugin außer Gundo:

$ git submodule add https://github.com/sjl/gundo.vim bundle/gundo 

Dieser Befehl führt keine Ausgabe aus. Das Repo wird zu .gitmodules hinzugefügt und bundle/gundoerstellt, ist jedoch bis auf eine .gitDatei leer .

$ cd bundle/gundo $ git status # On branch (null) # # Initial commit # nothing to commit (create/copy files and use "git add" to track) 

Ich bin völlig neu in Submodulen. Was ist das Besondere an diesem Repository und wie füge ich es richtig hinzu?

2

1 Antwort auf die Frage

2
maljub01

Sie wissen nicht genau, was genau passiert, aber es kann nützlich sein, wenn Sie die Ausgabe der folgenden Informationen prüfen / bereitstellen:

cd bundle/gundo git remote -v 

Wenn die Ausgabe anzeigt, dass das Repo den richtigen Ursprung hat, müssen Sie möglicherweise nur den Hauptzweig auschecken, dh:

cd bundle/gunco git fetch git checkout master 

Wenn das Submodul immer noch durcheinander ist und alles fehlschlägt, können Sie versuchen, das defekte Submodul und alle Spuren davon aus Ihrem Repo zu entfernen. Sie können dies tun, indem Sie die folgenden Befehle von der obersten Ebene Ihres Git-Arbeitsbaums aus ausführen:

git config -f .git/config --remove-section submodule.bundle/gundo git config -f .gitmodules --remove-section submodule.bundle/gundo git rm --cached bundle/gundo rm -rf .git/modules/bundle/gundo rm -rf bundle/gundo 

Überprüfen Sie git statusdanach, ob alles normal aussieht. Versuchen Sie dann erneut, das Submodul zu erstellen.

Wenn nichts davon funktioniert, fügen Sie git --versionIhrer git config -lFrage Ihre git-Version (run :) und Ihre config (run:) hinzu, da sie anderen dabei helfen können, herauszufinden, was los ist.

PS: Sie müssen nicht die gesamte Ausgabe von einfügen git config -lund sollten wahrscheinlich / mask-out user.name, user.email und andere Daten entfernen, die Sie nicht im Internet freigeben möchten.

Viel Glück!

Vielen Dank! Das komplette Entfernen des Submoduls gemäß Ihren Schritten hat den Trick ausgeführt. Ich bin nicht zu 100% sicher, aber ich glaube, ich habe beim ersten Mal die Repository-URL falsch eingegeben. Ich habe früher versucht, alle Spuren zu entfernen, aber ich war nicht gründlich genug. Dean vor 11 Jahren 0