Как я проверяю, пуст ли репозиторий?

Я использовал бы структуры когда:

  1. объект, как предполагается, только для чтения (каждый раз, когда Вы передаете/присваиваете структуру, он копируется). Объекты только для чтения являются большими когда дело доходит до многопоточной обработки, поскольку они не вознаграждают блокировку в большинстве случаев.

  2. объект является маленьким и коротко живет. В таком случае существует хороший шанс, что объект будет выделен на стеке, который намного более эффективен, чем помещение его на управляемой "куче". То, что является больше памятью, выделенной объектом, будет освобождено, как только это выходит за пределы своего объема. Другими словами, это - меньше работы для Сборщика "мусора", и память используется более эффективная.

22
задан Andrew Grimm 1 December 2009 в 18:45
поделиться

2 ответа

Как мне проверить, что он пустой?

Как указано в ответе ниже (проголосовало за) jberryman , если у вас есть доступ в удаленное репо, вы можете запустить в нем:

git rev-parse --is-bare-repository 

Он был введен еще при commit 493c774, Git 1.5.3 (сентябрь 2007 г.) и commit 7ae3df8 от ] Matthias Lederhofer ( matled ) .

Когда репозиторий пустой, выведите «true», в противном случае «false».


Вы можете использовать (из git config ):

 git config --add push.default current

, чтобы указать, что вы хотите отправить по умолчанию.

или:

 git config --global push.default matching

, если у вас много репозиториев.

current: переместить текущую ветку в ветку с тем же именем.

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


Таким образом, ваше целевое репо может быть пустым,но, как сказано в Sensible Git Refspecs :

Когда вы выполняете git pull , fetch, push и некоторые другие, вам необходимо указать refspec для текущего репозитория.
refspec описывает отображение между локальной ссылкой и удаленной, так что вы можете нажать (или вытащить и т. Д.) Головку главной ветви и сохранить ее как головку исходной ветви. В основном это способ сопоставления ветвей между репозиториями.

См. Также « концепцию открытого общего репозитория в git ».


Примечание: это правда, чем из Git1.6.3 ,:

« git push » в ветку, которая в настоящее время извлечена, будет отклонено по умолчанию.
Вы можете выбрать, что должно произойти после такого нажатия, установив переменную конфигурации receive.denyCurrentBranch в принимающем репозитории.

Но я не думаю, что это то, что вы видите прямо сейчас.


Поскольку упоминается в « все о« голых »репозиториях - что, почему и как исправить не-голое нажатие » (внизу)

Чтобы сделать его «настоящим» голым репо, просто удалите все файлы, кроме .git , затем mv .git / *.; rmdir .git .
Наконец, отредактируйте файл с именем config и измените bare = false на bare = true .

Итак, если ваше целевое репо имеет файл конфигурации с bare = true , это чистое репо.

33
ответ дан 16 October 2019 в 03:36
поделиться

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

git push origin master

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

3
ответ дан 16 October 2019 в 03:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: