Ответ 1
Чтобы исправить эту ошибку, вы должны удалить папку с тем же путем в подмодуль внутри каталога .git/modules/
. Эта ошибка может возникнуть, когда url был некорректным для подмодуля в первый раз при добавлении подмодуля.
Я пытаюсь добавить несколько подмодулей в мой каталог .vim/bundles
, и когда я пытаюсь добавить этот конкретный repo 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'
Любая идея, что может вызвать это?
Если я клонирую то же репо в тестовый каталог (а не через команду подмодуля), он отлично работает и создает ожидаемые файлы.
Чтобы исправить эту ошибку, вы должны удалить папку с тем же путем в подмодуль внутри каталога .git/modules/
. Эта ошибка может возникнуть, когда url был некорректным для подмодуля в первый раз при добавлении подмодуля.
Вам нужно добавить подмодуль внутри существующего репо, что репо должно находиться в состоянии для добавления и фиксации ссылки подмодуля, а сам репозиторий подмодуля должен иметь фиксацию для проверки.
Теперь сам репозиторий подмодуля должен быть в порядке, если вы можете создать обычный клон в другом месте. Тем не менее, похоже, что submodule add
жалуется, что репо пусто, а клон - нет. Этот парень предполагает, что это можно устранить, просто запустив ту же команду submodule add
.
Если внутреннее репо не пусто, проверьте репо, которое вы хотите содержать подмодуль. Перейдите в тот же каталог, где вы запустили git submodule add
, и запустите git status
и git branch
, чтобы убедиться, что у вашего репо есть хотя бы одна ветвь, и она не находится в странном состоянии.
Эта ошибка может произойти, если вы добавляете подмодуль, который не имеет ветки master
. Если вы хотите использовать другую ветку при добавлении подмодуля (например, develop
), вы можете использовать следующую команду:
git submodule add -b <branch> <repository>
Как упоминалось в @drew-noakes, это может быть вызвано попыткой добавить подмодуль, используя имя каталога, указанное в вашем файле .gitignore.