Обновление подмодуля git завершается с ошибкой на одном компьютере, но работает на другом компьютере - PullRequest
11 голосов
/ 13 января 2012

Я создал подмодуль git и поместил его в наш основной репозиторий. Это работало нормально, и я могу увидеть субмодуль в хранилище через браузер.

Для проверки работоспособности я попытался получить исходный код свежего дерева сборки. Сначала я пробежал git submodule init, а затем git submodule update <submodule-name>.

Это не с ошибкой:

error: pathspec 'x/mypkg' did not match any file(s) known to git. Did you forget to 'git add'

Я попытался добавить к .gitmodules URL подмодуля, но безуспешно.

Ответы [ 3 ]

22 голосов
/ 05 августа 2013

Я также получил эту ошибку, используя TortoiseGit, при попытке обновить подмодули, отсутствующие в индексе . То есть они существуют в .gitmodules, но не были правильно добавлены в хранилище.

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

git submodule add <url> <path>

Re-adding a git submodule

(Я понимаю, что это, вероятно, не решение для оригинального плаката, но, надеюсь, это поможет другим поискать это в Google.)

4 голосов
/ 13 января 2012

Вероятно, это связано с тем, что в вашем подмодуле есть изменения в вашем подмодуле, которые не опубликованы (зафиксированы, но не отправлены на удаленный сервер).Затем они опубликовали суперпроект со ссылками на коммит git в подмодуле, которого нет на git-сервере.Итак, git пытается получить определенный идентификатор коммита подмодуля git, который не может найти.

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

Для разрешения перейдите в тот репозиторий, который ссылается на коммит и публикует (отправляет) изменения подмодуля на сервер.Или измените подмодуль, чтобы он указывал на другой идентификатор фиксации.

1 голос
/ 13 января 2012

Чтобы получить новые подмодули в другие репозитории, я считаю, что вам нужно запустить git submodule init один раз, прежде чем запускать git submodule update;это зарегистрирует новый подмодуль от .gitmodules в .git/config.

...