Ось визначення голого сховища з gitglossary :
Оголене сховище зазвичай - це відповідний каталог з суфіксом .git, який не має локально перевіреної копії жодного з файлів під контролем редагування. Тобто, всі адміністративні та керуючі файли Git, які, як правило, присутні у прихованому .git підкаталозі, натомість є безпосередньо в каталозі repository.git, а інші файли відсутні та перевіряються. Зазвичай видавці загальнодоступних сховищ роблять доступними голі сховища.
Я приїхав сюди, тому що грав у "локальному сховищі" і хотів, щоб я міг робити все, що хотів, наче це було віддалене сховище. Я просто грав, намагаючись дізнатися про git. Я припускаю, що це ситуація для того, хто хоче прочитати цю відповідь.
Я хотів би отримати експертну думку чи деякі конкретні зустрічні приклади, однак, схоже, що (переглянувши якийсь вихідний код git, який я знайшов), просто перейдіть до файлу .git/config
та встановіть атрибут core голим у true , git дозволить вам робити все, що завгодно ви хочете зробити віддалене сховище віддалено. Тобто такі рядки повинні існувати в .git/config
:
[core]
...
bare = true
...
(Це приблизно те, що git config --bool core.bare true
буде робити команда , що, напевно, рекомендується вирішувати у більш складних ситуаціях)
Моє обгрунтування цього твердження полягає в тому, що у вихідному коді git, здається, є два різні способи тестування, чи репо-гола чи ні. Перший - перевірка глобальної змінної is_bare_repository_cfg
. Це встановлюється під час виконання деякої фази налаштування та відображає значення, знайдені у .git/config
файлі. Інше - це функція is_bare_repository()
. Ось визначення цієї функції:
int is_bare_repository(void)
{
/* if core.bare is not 'false', let's see if there is a work tree */
return is_bare_repository_cfg && !get_git_work_tree();
}
Я не раз і не досвід , щоб сказати це з повною впевненістю, але, наскільки я міг би сказати , якщо у вас є bare
набір атрибутів для true
в .git/config
, це завжди має повернутися 1
. Решта функції, ймовірно, призначена для наступної ситуації:
- core.bare не визначено (тобто ні істинно, ні хибно)
- Немає робочого дерева (тобто підкаталог .git - це головний каталог)
Я буду експериментувати з цим, коли можу пізніше, але це, мабуть, вказує на те, що встановлення core.bare = true еквівалентно видаленню core.bare з конфігураційного файлу та правильному налаштуванню каталогів.
У будь-якому випадку, встановлення core.bare = true, безумовно, дозволить вам наштовхнутись на це, але я не впевнений, чи наявність файлів проекту призведе до того, що деякі інші операції зіпсуються. Це цікаво, і я вважаю, що повчальним є зайти до сховища та подивитися, що сталося на локальному рівні (тобто запустити git status
та мати сенс для результатів).
mv repo/.git repo.git; rm -rf repo