Frage Git Submodule. In einen neuen Klon des Superprojekts ziehen


OK. Also ich dachte ich hätte das geleckt ... aber jetzt ....

Ich habe ein Projekt, das eine kleine Bibliothek von GitHub als Submodul enthält. In der ursprünglichen Version dieses Superprojekts arbeitet das Submodul wie erwartet.

Aber ich habe gerade das Superprojekt geklont, getan, was ich dachte, ich sollte: "git Submodul init", hat das Verzeichnis des Submoduls zu erscheinen, aber es ist leer.

Wenn ich es jetzt versuche

git submodule update

Ich bekomme

fatal: Needed a single revision 
Unable to find current revision in submodule path 'external_libraries/BEACHhtml'

Wenn ich es versuche

git submodule foreach git pull

Ich bekomme

Entering 'external_libraries/BEACHhtml'
fatal: Where do you want to fetch from today?
Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status.

In meiner .git / config habe ich folgendes:

[submodule "external_libraries/BEACHhtml"]
    url = git@github.com:interstar/BEACHhtml.git

In meinen .gitmodules habe ich folgendes:

[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = git@github.com:interstar/BEACHhtml.git

Jeder hat eine Idee, was fehlt?


75
2017-09-30 02:49


Ursprung


Antworten:


Ich habe das gleiche Problem wie du. Dies ist ein Fehler in Git: http://lists-archives.com/git/785138-git-submodule-update-is-not-fail-safe.html

Kurz, für Ihr Problem, versuchen Sie:

# rm -rf external_libraries/BEACHhtml
# git submodule update

Es scheint, dass mit dem vorherigen Checkout-Ordner etwas nicht stimmt, entfernen Sie es und aktualisieren Sie das Problem erneut.


164
2017-12-20 09:31



Ich hatte dieses Problem (flockiges Netzwerk, so dass ich Submodul-Checkout wie folgt fallen gelassen habe) und ich löste es, indem ich dieses Skript machte (nannte es git-submodule-fix also könnte ich es als laufen lassen git submodule-fix)

#!/bin/bash 

for arg 
do 
  echo $arg 
  find . -name "`basename $arg`" | grep "$arg\$" | xargs rm -fr
done

Wenn Sie das bekommen, d.h. von a git submodule update

fatal: Needed a single revision
Unable to find current revision in submodule path 'some/submodule/path'

machen

git submodule-fix some/submodule/path
git submodule update

3
2017-07-04 12:54



Gelöst durch Löschen von 2 Verzeichnissen und erneutem Einlesen des Submoduls:

  1. Gehe zu external_libraries/BEACHhtml und schau hinein .git Datei. Es sollte Inhalt wie etwas sein gitdir: ../../.git/modules/external_libraries/BEACHhtml
  2. Löschen Sie beide external_libraries/BEACHhtml und .git/modules/external_libraries/BEACHhtml Verzeichnisse.

Von jetzt an git submodule update läuft ohne Fehler.


2
2017-07-26 10:57



Verwenden Sie ein Diff-Tool, um den Original-Klon, der funktioniert, und diesen zu vergleichen. Auch was macht git submodule Ausgabe. Stellen Sie sicher, dass Sie in jedem Repo auf dieselbe Verzweigung zeigen, bevor Sie dies tun.

Ich vermute, dass Sie zu einer Zweigstelle oder einer älteren Revision gewechselt sind, wo das Submodul nicht definiert wurde.

hoffe das hilft


0
2017-09-30 04:46



Ich hatte das gleiche Problem mit einem Submodul in einem Projekt. Als ich versuchte, das Submodul separat zu klonen, funktionierte es gut.

Ich habe alle Antworten oben versucht, aber ohne Erfolg (git submodule update, ..., Entfernen der Submodul-Ordner, ...).

Das Problem verschwand nach dem Update von git (von Git-1.7.11-preview20120710) zur letzten Version (zu Git-1.8.1.2-preview20130201) zu der Zeit. Seltsamerweise hatten meine Kollegen noch ältere Versionen, funktionierte ohne Probleme, aber sie waren auf Mac. Ich bin auf Win7 64bit.


0
2018-03-04 09:55



Ich bin auf Window7. renn 'rm -rf src / sizzle', kann ok!

E: \ GitHub \ fork \ jquery> rm-rf src / sizzle
E: \ GitHub \ fork \ jquery> Aktualisierung des Git Submoduls
Submodulpfad 'src / sizzle': ausgecheckt '19c7b3440385c9f628a7bc1c5769f6946fcc6887'

E: \ GitHub \ fork \ jquery> grunt.cmd

...
Gespeichert als: Master

Fertig, ohne Fehler.


-5
2018-01-18 09:12