В основном нет каталога 'wrapping', хранящегося как часть репозитория. Ваши ожидания, что есть один, - это то, что вводит вас в заблуждение. Git repo по умолчанию - это каталог с именем .git
. Ваша песочница или материал, который выгружен, размещается на том же корневом уровне, что и папка .git
. Когда вы делаете клон, он автоматически проверяет основную ветку. Папка .git и checkout - это фактический корень вашего рабочего пространства git.
По соглашению, Git обычно выдает имя и создает каталог для вашей рабочей области, когда вы используете команду clone и git submodule add
. Он создаст каталог, а затем разместит git repo (папку .git
), а затем проверит в нем файлы основных ветвей. Однако вы можете указать git clone <repo> .
или git clone <repo> <target_dir>
, а Git поместит корень вашего репо и чек в любом месте.
Так что, если вы создали репозиторий вроде этого:
mkdir repo.git
cd repo.git
git init
touch foo
git add foo
git commit -m "Initial commit"
Когда вы клонировать его позже с git clone repo.git
это только по соглашению она помещается в подкаталог repo
, который имеет файл с именем foo
и каталог .git
, Тем не менее, repo является корневым каталогом, а не текущим каталогом (вы можете сказать, потому что в нем будет каталог .git
). Каталог, в котором вы выполняли клонирование, НЕ будет каталогом, в котором хранится каталог .git
или checkout. Если вы хотите, чтобы вы сделали git clone <repo> .
, а затем вы увидите только файл с именем foo
и каталог с именем .git
и без каталога с именем repo.
Если вы хотите всегда быть директория репо вложенности все источник в то вы бы сотворенной репо, как это:
mkdir repo.git
cd repo.git
git init
mkdir repo
cd repo
touch foo
git add foo
git commit -m "Initial commit"
Затем, когда вы клонировать его только с помощью git clone <uri>/repo.git
вы будете иметь каталог с именем repo
, который содержит каталог .git
и каталог с именем repo
, который имеет файл foo.По-моему, это слой косвенности, который может быть громоздким (я знаю, я сделал это ... один раз).
Submodule - это запись в основном репо, как просто справочник, который содержит другой git repo при определенной проверке. Когда вы запускаете и обновляете подмодуль в первый раз, это в основном просто создает каталог, зарезервированный для подмодуля, по основному репо, а затем извлекает это полное git repo и checkout в этот каталог. Поскольку теперь вы должны понимать, что git-репо обычно является каталогом .git и проверкой вместе с ним, должно быть очевидно, почему в этом каталоге нет и другого каталога обертки. Вы в основном называете, какой каталог должен подмодулировать, когда вы используете команду git submodule add <repo> [<target_dir>]
.