2015-01-14 5 views
0

фона:Bare мерзавец против .git/- цели config.bare

Я создал голую репо

cd ~ 
git init --bare GitDrive 

Идея заключалась в том, чтобы использовать это в качестве мерзавца директории для диск Google

cd "Google Drive" 
echo "gitdir: ../GitDrive 

Но мерзавец не нравится, пока я не удалены bare = true от .git/config

Это заставило меня задуматься о назначении конфигурации, является ли репо открытым или нет.
Чтение git-config похоже, используется, чтобы избежать угадывания вопроса об открытии репо.

Я знаю, что вы не можете проверить в голом репо, но вы не можете проверить в репо/.git/независимо от настройки config.bare.

В каких ситуациях невозможно определить, является ли репо открытым или нет?

Что такое технический термин для каталога, содержащего файлы config/info/hooks/index ...?
Быть repo/ для голого репо и repo/.git/ в противном случае.

Какова техническая разница между репо, созданным с использованием git init --bare, и вытаскиванием каталога .git из реального репо?

+0

Вы начали копаться в файлах, и вы не указали, чего именно вы хотите достичь. Вы сказали что-то о «Google Диске». Как вы хотите использовать 'git', связанную с« Google Диском »? – axiac

+0

@axiac «Google Диск» не проблема, она была решена с использованием решения, описанного в первой части вопроса, * Background *. То, что я достиг, - это синхронизировать папку Google Диска под управлением git без сохранения папки .git внутри синхронизированной папки (поскольку в настоящее время .git больше не игнорируется). ** все еще это не вопрос о том, что это ** – hultqvist

ответ

1

Голый репозиторий не связан ни с одной рабочей станцией. Его цель - принять нажатие из других репозиториев. У не-голого репозитория есть рабочий каталог, который является родительским каталогом папки .git. Хотя небезопасные репозитории можно технически подтолкнуть, это нецелесообразно, потому что если вы нажимаете на текущую ветку не-годового репозитория, это может вызвать проблемы с рабочим каталогом и индексом, поскольку они могут быть не слиты правильно.

Голый репозиторий может иметь текущую ветку, но при проверке веток нет эффекта, кроме файла HEAD. Целью этого является просмотр с помощью команд Git. Нет прямого представления о структуре файла.

+1

* [...], который является родительским каталогом папки .git. * Это правда в большинстве случаев, но не обязательно. – Jubobs

+0

Это хорошее начало, описывающее общие концепции голых и не-голых репозиториев, но оно останавливается, когда начинается мой вопрос. – hultqvist

0

Ваш вопрос непонятен; если цель состоит в том, чтобы поместить файлы, которые вы имеете на директории 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), как обычно.

+0

Спасибо, что хорошо знать, это как ярлык (если вы помните команду) тому, что я сделал в разделе * Background * моих вопросов. Хотя, похоже, он не затрагивает вопросы, изложенные в конце. – hultqvist

+0

Это не ярлык, это правильный способ сделать это :-) – axiac

+0

Вы можете найти информацию о документации '' git' (http://git-scm.com/docs/gitrepository-layout) о различия. Вы можете прочитать [эту статью] (http://bitflop.com/tutorials/git-bare-vs-non-bare-repositories.html), это объясняет некоторые вещи. Также этот вопрос SO: [Как преобразовать обычный репозиторий Git в голый?] (Http://stackoverflow.com/questions/2199897/how-to-convert-a-normal-git-repository-to-a- голые один) – axiac

Смежные вопросы