Bare git vs .git/ - назначение config.bare
Фон:
Я создал голое репо
cd ~ git init --bare GitDrive
Идея заключалась в том, чтобы использовать это в качестве Git DIR для Google Drive
cd "Google Drive" echo "gitdir: ../GitDrive
Но мерзавцу это не нравилось, пока я не удалил
bare = true
от.git/config
Это заставило меня задуматься о назначении конфигурации независимо от того, является ли репозиторий пустым или нет.
Чтение git-config, по-видимому, используется для того, чтобы не догадываться, является ли репозиторий пустым или нет.
Я знаю, что вы не можете оформить заказ в голом репо, но вы также не можете оформить заказ в репо /.git/ независимо от настроек config.bare.
В каких ситуациях git не может определить, является ли репо голым или нет?
Каков технический термин для каталога, содержащего файлы config/info/hooks/index...?
бытие repo/
для голого репо и repo/.git/
иначе.
В чем техническая разница между репо, созданным с использованием git init --bare
и вытащить каталог.git из живого репо?
2 ответа
Пустой репозиторий вообще не связан ни с одним рабочим каталогом. Его цель - принимать толчки из других репозиториев. Неполное хранилище имеет рабочий каталог, который является родительским каталогом .git
папка. Несмотря на то, что в не-пустые репозитории технически можно помещать данные, это не рекомендуется, поскольку если вы перемещаетесь в текущую ветвь не-пустого репозитория, это может вызвать проблемы с рабочим каталогом и индексом, поскольку они могут быть неправильно объединены.
Пустой репозиторий может иметь текущую ветку, но когда вы проверяете ветки, нет никакого эффекта, кроме как HEAD
файл. Целью этого является просмотр с помощью команд Git. Прямой просмотр структуры файла недоступен.
Ваш вопрос не ясен; если цель состоит в том, чтобы поместить ваши файлы в каталог Google Drive
в git
хранилище, которое находится за пределами Google Drive
каталог, то решение очень простое:
cd "Google Drive"
git init --separate-git-dir ../GitDrive
Убедитесь, что каталог ../GitDrive
не существует или он пуст.
Сюда git
создаст хранилище в каталоге ../GitDrive
вместо ./.git
(внутри текущего каталога). Однако он создаст файл с именем .git
в рабочем дереве (каталог "Диск Google"), который содержит путь к хранилищу (полный путь к ../GitDrive
).
Вы можете запустить свой git
Команды как в Google Drive
И в GitDrive
, они будут работать (хранилище также знает, где находится рабочее дерево). Но у вас нет реальной причины возиться с файлами в хранилище. Делай свою работу в рабочем дереве (каталог Google Drive
), по-прежнему.