Подмодулей В 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


кто-нибудь знает, чего не хватает?

654   6  

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 update

fatal: 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 каталогов и рефетчинга подмодуля:

  1. на external_libraries/BEACHhtml и посмотрите на . Это содержание должно быть что-то вроде gitdir: ../../.git/modules/external_libraries/BEACHhtml
  2. удалить 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

    Ничего не найдено.