Подмодулей В Git. Втягивание в новый клон супер-проекта
ОК. Так что я думал, что мне это удалось ... но сейчас ....
у меня есть проект, который включает в себя одну небольшую библиотеку с GitHub в качестве подмодуля. В оригинальной версии этого супер-проекта подмодуль работает так, как ожидалось.
тем не менее, я просто клонировал суперпроект, сделал то, что я думал, что должен : "git submodule init", получил каталог подмодуля, чтобы появиться, но он пуст.
если я сейчас попытаюсь сделать
git submodule update
Я вам
fatal: Needed a single revision
Unable to find current revision in submodule path 'external_libraries/BEACHhtml'
если я попробую
git submodule foreach git pull
Я
Entering 'external_libraries/BEACHhtml'
fatal: Where do you want to fetch from today?
Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status.
в моем .git / config, у меня есть это:
[submodule "external_libraries/BEACHhtml"]
url = [email protected]:interstar/BEACHhtml.git
в моем .gitmodules у меня есть это :
[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = [email protected]:interstar/BEACHhtml.git
кто-нибудь знает, чего не хватает?
6 ответов:
У меня та же проблема, что и у вас. Это ошибка в git: http://lists-archives.com/git/785138-git-submodule-update-is-not-fail-safe.html
короче говоря, для вашей проблемы, попробуйте:
# rm -rf external_libraries/BEACHhtml # git submodule updateКажется, что что-то не так с предыдущей папкой проверки, удалите ее, и обновление снова решит проблему.
у меня была эта проблема (шелушащаяся сеть, поэтому я получил dropped submodule checkout вот так), и я решил ее, сделав этот скрипт (назвал его
git-submodule-fixТак что я мог бы запустить его какgit submodule-fix)#!/bin/bash for arg do echo $arg find . -name "`basename $arg`" | grep "$arg$" | xargs rm -fr doneесли вы получаете это т. е. от
git submodule updatefatal: Needed a single revision Unable to find current revision in submodule path 'some/submodule/path'do
git submodule-fix some/submodule/path git submodule update
решается путем удаления 2 каталогов и рефетчинга подмодуля:
- на
external_libraries/BEACHhtmlи посмотрите на . Это содержание должно быть что-то вродеgitdir: ../../.git/modules/external_libraries/BEACHhtml- удалить
external_libraries/BEACHhtmlи.git/modules/external_libraries/BEACHhtmlсправочники.теперь
git submodule updateработает без ошибок.
используйте инструмент diff для сравнения исходного клона, который работает, и этого. Кроме того, что делает
git submoduleвыход. Перед этим убедитесь, что вы указываете на одну и ту же ветвь в каждом РЕПО.Я подозреваю, что вы переключились на ветку или более старую версию, где подмодуль не был определен.
надеюсь, что это помогает
У меня была такая же проблема с подмодулем в проекте. Когда я попытался клонировать подмодуль отдельно, он работал хорошо.
Я пробовал все ответы выше, но без успеха (git submodule update,..., удаление папок подмодуля, ...).
проблема исчезла после обновления git (от Git-1.7.11-preview20120710) до последней версии (до Git-1.8.1.2-preview20130201) в то время. Как ни странно у моих коллег была еще более старая версия, работала без каких-либо проблем, но они были на Маке. Я на Win7 64bit.
Я на Window7. запустите 'rm-rf src / sizzle', can ok!
E:\GitHub\fork\jquery>rm-rf src / sizzle
E:\GitHub\fork\jquery > обновление подмодуля git
Путь подмодуля 'src/sizzle': проверено '19c7b3440385c9f628a7bc1c5769f6946fcc6887'E:\GitHub\fork\jquery>хрюкать.cmd
...
Сохранить как: мастервыполнена без ошибок.
Comments