Невозможно `подмодуль git foreach git pull` - PullRequest
4 голосов
/ 20 июля 2009

Этот вопрос основан на этой теме .

Мои .gitmodules в моем доме

[submodule "bin"]
           path = bin
           url = git://github.com/masi/bin.git

Структура моей папки в моем доме:

~
|-- [drwxr-xr-x] bin          // this is the folder which I make a submodule
                              // it is also a folder where I have a Git to push my submodule's files
    | -- fileA
    ` -- folderA
    ...

Я бегу

git submodule init    # I get no output from these commands
git submodule update          

Я бегу

git submodule foreach git pull

Я получаю

Entering 'bin'
fatal: Where do you want to fetch from today?
Stopping at 'bin'; script returned non-zero status.

Моим первым предположением, чтобы исправить ошибку, было изменение path = bin на path = /Users/Masi/bin. Однако это не решает проблему.

Как вы можете загрузить контент из внешнего репозитория, который является подмодулем в моем Git?

1 Ответ

5 голосов
/ 20 июля 2009

Обычно это ошибка, когда не настроен пульт ДУ.
этой темы )

Это был патч, введенный, по крайней мере, для исправления регрессии при запуске git pull в репозитории, инициализированном давным-давно, который не использует файл .git / config, чтобы указать, где находятся мои удаленные репозитории.

лучшее сообщение, вероятно, будет примерно таким:

Пульт по умолчанию не настроен для вашей текущей ветки,
и удаленный «источник» по умолчанию также не настроен.

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


Таким образом, это сообщение указывает, что удаленное хранилище, упомянутое в .git / modules, не объявлено в .git / config

С Подмодуль git

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

Полагаю, вы, возможно, пропустили шаг git submodule init:

субмодуль init

Инициализировать подмодули, т.е. зарегистрируйте каждое имя подмодуля и URL, найденные в .gitmodules, в .git / config .
Ключ, используемый в .git/config: submodule.$name.url.
Эта команда не изменяет существующую информацию в .git / config.
Затем вы можете настроить URL-адреса клонов субмодулей в .git/config для локальной настройки и перейти к обновлению подмодуля git; вы также можете просто использовать git submodule update --init без явного шага инициализации, если вы не собираетесь настраивать расположение подмодулей.

Если ваше удаленное хранилище (объявлено в .git / modules) имеет соответствующую ссылку в .git / config, у вас больше не должно появиться это сообщение об ошибке.

Перед использованием (pullin) подмодулей выполните следующие шаги:

git submodule init
git submodule update

остаются необходимыми.

...