Как я могу проверить, является ли репозиторий пустым? - PullRequest
20 голосов
/ 02 декабря 2009

Я получаю предупреждение

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

что является (я думаю) предупреждением о том, что пульт дистанционного управления не голый. Тем не менее, я предполагал, что remote должен быть пустым, и в каталоге (который имеет вид foo.git) нет каталога .git. Как мне проверить, что она голая?

Дополнительная информация : Удаленный репозиторий находится на компьютере с git 1.5.4.3, а локальный репозиторий имеет git 1.6.3.3. Обе машины - Ubuntu - локальная - Karmic Koala, удаленная - более старая версия.

Ответы [ 5 ]

37 голосов
/ 06 февраля 2013

Не похоже, что это была ваша проблема, но на самом деле ответить на вопрос, который вы задали в заголовке: вы можете запустить ...

$ git rev-parse --is-bare-repository

... чтобы запросить репо или нет. Возвращает true или false.

31 голосов
/ 02 декабря 2009

Как мне проверить, что она голая?

Как упомянуто в ответе ниже (upvoted) 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: выдвинуть текущую ветку в ветку с тем же именем.

Проверьте также, не сопровождалось ли предупреждением сообщение об ошибке, как в этом ТА вопрос .


Таким образом, ваш репозиторий может быть пустым, но, как сказано в Sensible 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, это будет голое репо.

3 голосов
/ 02 декабря 2009

Сообщение, которое вы получаете, означает, что ваш удаленный репозиторий пуст (что никак не связано с отсутствием информации). При первом добавлении в удаленный репозиторий необходимо указать, что отправлять:

git push origin master

Это перенесет вашу текущую главную ветку в удаленный репозиторий. Последующие вызовы git push будут выдвигать «совпадающие» ветви, т. Е. Если в удаленном репозитории есть «главная» ветвь, ваша локальная «главная» ветвь будет добавлена ​​в нее.

1 голос
/ 22 ноября 2017

1001 * попробовать *

 $ git config --get core.bare
0 голосов
/ 09 июля 2016

Откройте файл config в каталоге .get и найдите bare = true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...