Подтвердить что ты не робот

"Вы еще не родились в филиале" при добавлении подмодуля git

Я пытаюсь добавить несколько подмодулей в мой каталог .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'

Любая идея, что может вызвать это?

Если я клонирую то же репо в тестовый каталог (а не через команду подмодуля), он отлично работает и создает ожидаемые файлы.

4b9b3361

Ответ 1

Чтобы исправить эту ошибку, вы должны удалить папку с тем же путем в подмодуль внутри каталога .git/modules/. Эта ошибка может возникнуть, когда url был некорректным для подмодуля в первый раз при добавлении подмодуля.

Ответ 2

Вам нужно добавить подмодуль внутри существующего репо, что репо должно находиться в состоянии для добавления и фиксации ссылки подмодуля, а сам репозиторий подмодуля должен иметь фиксацию для проверки.

Теперь сам репозиторий подмодуля должен быть в порядке, если вы можете создать обычный клон в другом месте. Тем не менее, похоже, что submodule add жалуется, что репо пусто, а клон - нет. Этот парень предполагает, что это можно устранить, просто запустив ту же команду submodule add.

Если внутреннее репо не пусто, проверьте репо, которое вы хотите содержать подмодуль. Перейдите в тот же каталог, где вы запустили git submodule add, и запустите git status и git branch, чтобы убедиться, что у вашего репо есть хотя бы одна ветвь, и она не находится в странном состоянии.

Ответ 3

Эта ошибка может произойти, если вы добавляете подмодуль, который не имеет ветки master. Если вы хотите использовать другую ветку при добавлении подмодуля (например, develop), вы можете использовать следующую команду:

git submodule add -b <branch> <repository>

Ответ 4

Как упоминалось в @drew-noakes, это может быть вызвано попыткой добавить подмодуль, используя имя каталога, указанное в вашем файле .gitignore.