Пустая папка подмодуля Git при клонировании репо


130

У меня есть одно репо, размещенное на https://github.com/aikiframework/json . В моей локальной копии я добавил подмодуль с помощью команды

git submodule add git@github.com:jcubic/json-rpc.git json-rpc

Затем я сделал коммит и нажал, и изменения появятся на GitHub (я могу щелкнуть по нему). Но когда я клонирую репо

git clone https://github.com/aikiframework/json.git

папка подмодуля json-rpc пуста.

Что мне здесь не хватает? Я что-то забыл? Почему эта папка пуста?

Ответы:


200

Хорошо, я нашел это, нужно добавить --recursiveпри клонировании репо.

Таким образом, команда clone выглядит так:

git clone https://github.com/aikiframework/json.git --recursive

229
Ага. Вы также можете получить подмодули постфактум с помощью git submodule update --init, если вы уже клонировали, но забыли --recursive.
Эмбер

4
Только что столкнулся с проблемой, что в ветке разработки есть подмодуль, но еще нет в основной ветке. Когда вы клонируете репозиторий git с помощью --recursive, он не найдет подмодуль в основной ветке, и вы должны получить его с помощью комментария Эмберса «git submodule update --init», чтобы получить также подмодуль.
d4Rk

11
Если вы используете , git submodule update --initвам придется идти к каждому репо и сделать в git checkout masterпротивном случае вы получите сообщение об ошибке You are not currently on a branch.на git pullпри попытке обновить его до более новой версии.
Noitidart

@Noitidart есть способ, который этого не делает? (после клонирования проекта уже)
borgr

1
@Noitidart Спасибо за update --initподсказку. Это действительно помогает, когда в исходном клоне не было --recursiveи просто нужно вытащить недостающие подмодули.
Jari Turkia
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.