Как проверить, нет ли репозитория?
Я получаю предупреждение
warning: You did not specify any refspecs to push, and the current remote
warning: has not configured any push refspecs. The default action in this
warning: case is to push all matching refspecs, that is, all branches
warning: that exist both locally and remotely will be updated. This may
warning: not necessarily be what you want to happen.
warning:
warning: You can specify what action you want to take in this case, and
warning: avoid seeing this message again, by configuring 'push.default' to:
warning: 'nothing' : Do not push anything
warning: 'matching' : Push all matching branches (default)
warning: 'tracking' : Push the current branch to whatever it is tracking
warning: 'current' : Push the current branch
который является (я думаю) предупреждением о том, что пульт не голый. Тем не менее я намеревался, чтобы пульт был открытым, а каталог (который находится в форме foo.git
) не имеет в нем директории .git. Как проверить, что он голый?
Дополнительная информация. Удаленный репозиторий находится на компьютере с git 1.5.4.3, а локальный репозиторий имеет git 1.6.3.3. Обе машины - Ubuntu - локальный - Karmic Koala, удаленный - более старая версия.
Ответы
Ответ 1
Как проверить, что он голый?
Как уже упоминалось в ниже (), jberryman, если у вас есть доступ к удаленное репо, вы можете запустить в нем:
git rev-parse --is-bare-repository
Он был введен еще совершить 493c774, Git 1.5.3 (сентябрь 2007 г.) и зафиксировать 7ae3df8 Маттиас Ледерхофер (matled
).
Когда репозиторий не горит, напечатайте "true", иначе "false".
Вы можете использовать (из git config
):
git config --add push.default current
чтобы указать, что вы хотите нажать по умолчанию.
или
git config --global push.default matching
если у вас много репозиториев.
current: нажмите текущую ветвь на ветку с таким же именем.
Также проверьте, не сопровождалось ли предупреждением сообщение об ошибке вроде SO.
Итак, ваш репозиторий назначения может быть голым, но, как сказано в Разумный Git Refspecs:
Когда вы делаете git pull
, fetch,
push
и некоторые другие, вам нужно указать refspec
для текущего репозитория.
A refspec
описывает сопоставление между локальным эталоном и удаленным, поэтому вы можете нажать (или вытащить и т.д.) Главную ветвь ветки и сохранить ее как головку ветки начала. В основном это способ отображения ветвей между репозиториями.
См. также "концепция совместного доступа в общем хранилище в git.
Примечание: это верно, чем от Git1.6.3,:
"git push
" в ветку, которая в настоящий момент проверена, будет отказано по умолчанию.
Вы можете выбрать, что должно произойти при таком нажатии, установив конфигурационную переменную receive.denyCurrentBranch
в принимающий репозиторий.
Но я не думаю, что это то, что вы видите прямо сейчас.
Как упоминалось в разделе "все о "голых" репозиториях - что, почему и как исправить не-голое нажатие" ( внизу)
Чтобы сделать это "реальным" голым репо, просто удалите все файлы, кроме .git
, затем mv .git/* .; rmdir .git
.
Наконец, отредактируйте файл с именем config
и измените bare = false
на bare = true
.
Итак, если у вашего репозитория-получателя есть файл config
с bare = true
, он является открытым репо.
Ответ 2
Не похоже, что это была ваша проблема, но чтобы ответить на вопрос, который вы задали в названии: вы можете запустить...
$ git rev-parse --is-bare-repository
... запрашивать, является ли репо открытым или нет. Возвращает "true" или "false".
Ответ 3
Сообщение, которое вы получаете, означает, что ваш удаленный репозиторий пуст (что не имеет ничего общего с тем, что он голый). При первом нажатии в удаленный репозиторий вам нужно указать, что нажать:
git push origin master
Это приведет к тому, что ваша текущая ведущая ветвь будет удалена в удаленный репозиторий. Последующие вызовы git push
будут толкать "соответствующие" ветки, т.е. Если theres "ведущая" ветвь в удаленном репозитории, то ваша локальная "ведущая" ветвь будет нажата на нее.
Ответ 4
Откройте файл config
в каталоге .get
и найдите bare = true
.
Ответ 5
попробовать
$ git config --get core.bare