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), по-прежнему.

Другие вопросы по тегам