(Обновление в апреле 2017 года для Git 2.13, второй квартал 2017 года)
Теперь существует официальная команда для определения того, является ли репо подмодулем родительского репо:
cd /path/to/potential/submodule/repo
git rev-parse --show-superproject-working-tree
См. коммит bf0231c (08 марта 2017 г.) Стефан Беллер (stefanbeller
) .
(объединено Junio C Hamano - gitster
- in commit 3edcc04 , 17 марта 2017 г.)
rev-parse
: add --show-superproject-working-tree
В некоторых ситуациях полезно знатьесли данный репозиторий является подмодулем другого репозитория.
Добавьте флаг --show-superproject-working-tree
в git-rev-parse
, чтобы упростить поиск наличия суперпроекта.
Если суперпроекта не существует, выводбудет пустым.
Jethro Yu * 1035 * предлагает в комментариях :
получить путь к суперпроекту независимо от того, внутри или снаружисубмодуль:
git rev-parse --show-superproject-working-tree --show-toplevel | head -1
(обновление 2014 г.) Как отмечает Квентин Прадет , более поздние репозитории подмодулей Git показывают простой .git
файл инстпапка .git
.
Этот файл .git
ссылается на путь фактического подмодуля git repo, хранящегося в подпапке parent repo .git/modules
.
(Оригинальный ответ: сентябрь 2011 г.)
Сама природа подмодуля заключается в том, что git-репо, действующий как подмодуль, не подозревает, что он используется в качестве подмодуля родительским репо.
OneГрязный трюк заключался бы в том, чтобы:
- изменить файл
- вернуться на один уровень выше текущего репо
- попробовать "
git status --ignore-submodules=none
" - восстановить измененный файл.
Если вы видите файл в результате git status
, ваше хранилище должно быть субмодулем.
Если это только вложенное хранилище, git status
следует полностью игнорировать ваше вложенное хранилище.