Вие сте на клон, който предстои да се роди, когато добавяте подмодул git

Опитвам се да добавя няколко подмодула към моята .vim/bundles директория и когато се опитам да добавя това конкретно репо Git ми дава странна грешка, която никога не съм виждал преди:

$ git submodule add -f git://github.com/derekwyatt/vim-scala.git .vim/bundle/vim-scala
fatal: You are on a branch yet to be born
Unable to checkout submodule '.vim/bundle/vim-scala'

Някаква идея какво може да причини това?

Ако клонирам същото репо в тестова директория (не чрез командата submodule), то работи добре и създава очакваните файлове.


person matt b    schedule 09.08.2012    source източник


Отговори (4)


За да коригирате тази грешка, трябва да изтриете папката със същия път до подмодула в директорията .git/modules/. Тази грешка може да възникне, когато URL адресът е неправилен за подмодул за първи път, когато е добавен подмодул.

person lisachenko    schedule 22.08.2012
comment
Благодаря, това свърши работа. Първоначално беше малко очевидно, че тъй като клонирах към .vim/bundle/vim-scala пътят за изтриване беше .git/modules/.vim/bundle/vim-scala - person matt b; 22.08.2012
comment
Ако сте на Windows, имайте предвид, че директорията под .git/modules може да не се покаже, освен ако не dir /AH - person paxos1977; 16.09.2012
comment
След като видя изтриване на тази .git/modules/path/to/submodule директория и се опитах да добавя отново подмодула, получавам грешката Следният път е игнориран от един от вашите .gitignore файлове: път/до/подмодул. - person Drew Noakes; 18.09.2012
comment
@Drew Noakes премахва .vim/bundle/vim-scala, създаден след първото изпълнение на git submodule add - person Piotr Król; 20.02.2013
comment
В Windows можете също да използвате опциите на Windows Explorer (на същото място, където бихте избрали да видите файловите разширения), за да видите скритите папки в GUI и да ги изтриете. - person user83358; 24.07.2013
comment
Ако този родителски подмодул е ​​самият подмодул, директорията .git ще бъде на основния модул (подмодулите ще имат само .git файл, а не директория). - person Yoav; 07.11.2013
comment
същият резултат след изтриване на модули dir от .git и директорията, създадена в родителския проект. Защо трябва да е различно от това, когато се провали първия път и тези директории все още не бяха там? - person davidjmcclelland; 15.08.2015
comment
Ако добавяте подмодул, който се състои от лъскаво ново празно репо, както бях аз, ще се въртите в кръг, докато не направите ангажимент за мастериране (като readme.md,) в допълнение към премахването на директорията, спомената тук. Клонът, който тепърва ще се ражда, е господар. - person davidjmcclelland; 15.08.2015
comment
Това заедно с отговора на Useless' реши проблема ми. Идеалният отговор би бил комбинация от двете. Благодаря! - person polynomial_donut; 02.06.2017

Тази грешка може да възникне, ако добавяте подмодул, който няма клон master. Ако искате да използвате друг клон, когато добавяте подмодула (develop например), можете да използвате следната команда:

git submodule add -b <branch> <repository>
person k4nar    schedule 22.05.2015
comment
В моя случай репото беше новосъздадено и следователно нямаше никакви файлове и клонове (беше празно), така че git submodule add -b master <repo.git> <folder> помогна - person vladkras; 17.11.2016
comment
Това беше моят проблем, моят подмодул имаше само 2 клона, нито един от тях не е master вашето решение работи за мен. - person Guerneen4; 16.03.2017

Трябва да добавите подмодул вътре в съществуващо репо, това репо трябва да е в състояние за добавяне и ангажимент на връзката към подмодул, и самото репо на подмодула трябва да има ангажимент за проверка.

Сега самото репо на подмодула трябва да е наред, ако можете да създадете обикновен клонинг другаде. Изглежда обаче, че submodule add се оплаква, ако репото е празно, докато клонирането не. Този човек предполага, че това може да се поправи, като просто стартирате същото submodule add команда отново.

Ако вътрешното хранилище не е празно, проверете хранилището, което искате да съдържа подмодула. Променете в същата директория, в която сте изпълнили git submodule add, и изпълнете git status и git branch, за да проверите дали вашето съдържащо репо има създаден поне един клон и не е в странно състояние.

person Useless    schedule 09.08.2012
comment
Проверих всички тези неща. Когато проверя желаното репо в друга директория, то има много файлове и master клон. Репото, към което се опитвам да добавя това като подмодул, е в клона master, няма очевидни проблеми (състоянието връща някои модифицирани файлове, но това е всичко) и най-странното от всичко е, че мога да добавя други подмодули съвсем добре към това хранилище. - person matt b; 09.08.2012
comment
Също така странно: след предупреждението fatal от моята OP, git оставя празен каталог в .vim/bundle/vim-scala. Забелязах също, че въпреки че .gitmodules е недокоснат, той добави някои редове, отнасящи се до това репо на github.com към .git/config, но след като ги премахнах, все още получавам същото съобщение за грешка fatal. - person matt b; 09.08.2012
comment
+1 Арх! This guy suggests this is fixable by just running the same submodule add command again.. Борих се с този проблем, опитвайки се да намеря разумен отговор и това най-накрая го поправи. Това беше за git 1.8.0 под MSYS, докато създавате подмодул от BitBucket, така че ако сте в същата ситуация, опитайте първо това. - person Aaron Newton; 28.12.2012
comment
Добавянето два пъти проработи и при мен. Но не разбирам защо. Някакво обяснение? - person Elliot; 01.03.2018
comment
Добавяне два пъти и тук. Бих искал обаче да разбера защо - person Vinicius Dantas; 05.08.2019
comment
Вероятно защото git submodule add е съставна операция: (клонирай, ако е необходимо, и провери правилния клон) и след това добави. При първото стартиране клонирането успява, но проверката е неуспешна, защото все още няма ангажимент за намиране. - person Useless; 05.08.2019

Както се споменава от @drew-noakes, това може да бъде причинено от опит за добавяне на подмодул с помощта на име на директория, което е посочено във вашия файл .gitignore.

person John McFarlane    schedule 21.08.2015