git submodule update fataler Fehler: Referenz ist kein Baum
user$ sudo git submodule update
fatal: reference is not a tree: a094dcfeeb43fcd62a9e466156e05e7581026f33
Unable to checkout 'a094dcfeeb43fcd62a9e466156e05e7581026f33' in submodule path 'client/src/util'
Was kann ich tun? Ich will einfach nur, um eine saubere Kopie der neuesten code aus dem repo, i dont mind losing my änderungen. Wie können Sie sagen, dass ich deutlich bin nicht sicher, was passiert ist. Ich kann mir nur denken, dass es versucht, zu Kasse eine Datei, die bedeutet, git erkannt, dass eine lokale änderung in einer Datei auf meinem lokalen Rechner.
ich bin derzeit mit OSX
InformationsquelleAutor der Frage bouncingHippo | 2012-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist das häufigste problem, mit Submodule. Der commit, den Sie in der äußeren repository hat eine Referenz auf einen commit in der submodule, dass jemand nicht schieben bis noch. Es ist ein Abhängigkeitsproblem. Immer schieben, von innen nach außen. Dies ist wahrscheinlich nicht etwas, was du falsch gemacht hast, sondern jemand anderes, das arbeiten im repository. Sie waren schlampig und vergaß ausstellen drücken Sie auf die submodule und stieß das mit repository. Funktioniert das auf Ihre Maschine, weil Sie die änderung vorgenommen und diese verpflichtet die es gibt. Gehen Sie Schlag Sie und Sag Ihnen, Sie sollen push-up-Ihre-Submodul verpasst 🙂
Ansonsten könnte es deine Schuld sein, wenn Sie arbeiten auf einer anderen Maschine und Sie vergessen haben, schieben Sie das Submodul änderungen. Jetzt bist du am anderen Ort und denken "WTF! Dies sind meine änderungen, und Sie sollten auch hier!"
InformationsquelleAutor der Antwort Adam Dymitruk
Meiste Zeit es wird der Fall beschrieben, von Adam Dymitruk, aber ein weiterer Fall, der das verursachen kann, ist beim Wechsel äste, die Submodule, die geändert Fernbedienungen. Dies ist, weil die submodule update nur versucht zu tun, ein checkout des zu Begehen, aber es wird nicht in der Lage sein, um Sie vor dem hinzufügen und abrufen der neuen Fernbedienung.
Können Sie dies überprüfen, indem man die .gitmodules-Datei und vergleicht die Submodule' URL mit der Abbildung von cd ' Ing der submodule und dabei eine
git remote -v
In diesem Fall müssen Sie
git submodule sync
zu Benachrichtigen das Submodul über die Fernbedienung ändern, gefolgt vongit submodule update --init --recursive
um loszuwerden, diese Fehler.InformationsquelleAutor der Antwort Michael Chinen
Neben Adam Dymitruk und Michael Chinen Antworten, stieß ich auf dieses problem, da die Fenster der maximale Pfad-Länge. Wenn ich versuche, Klon einer bestimmten repo-3-Ebene tief Submodule, die in meinem
Documents/Visual Studio 2013/Projects
Verzeichnis, dann bekomme ichfatal: reference is not a tree
. Aber wenn ich wiederholen Sie den gleichen genauen Klon in meinem home-Verzeichnis, es funktioniert gut.InformationsquelleAutor der Antwort Edward Ned Harvey
Der Fehler bedeutet, dass bestimmte commit (seine sha1) ist nicht erreichbar von jedem der refs beim Klonen der submodule, so sollten Sie entweder aktualisieren Sie Ihren Submodul mit Gültiger Referenz-oder zurücksetzen der änderungen auf die neueste version.
Dies kann passieren, wenn man die neuen commits in die Gabel, lokale oder haben Sie enthalten Verweise auf die freistehende LEITER, aber Sie nicht schieben Sie Sie in Ihr Haupt-repository auf dem git-submodule URL verweist.
Zurücksetzen Submodul manuell zu origin/master, geben Sie das Unterverzeichnis der submodule und den reset, z.B.
Wenn Sie möchten, korrigieren Sie den Verweis in den Haupt-repo, nach oben genannten änderungen:
Wenn Sie möchten, um pull-und push Verweise von Gabel zu Herkunft, die Sie ausprobieren können:
InformationsquelleAutor der Antwort kenorb
Wahrscheinlich dein Submodul-repository hat keine revision, auf die verwiesen äußeren repository. Und es kann auch nicht an der Fernbedienung angegeben für Submodul, oder Sie haben nicht die remote set-up für submodule. Sie können versuchen, zu gehen in
client/src/util
undgit fetch
.(warum tun Sie
sudo
? wenn es gehört zum root-warum bist du nicht in der root-shell, und wenn es nicht klappt, warum wechseln Sie zum root?)InformationsquelleAutor der Antwort Michael Krelin - hacker