gitolite: пульты по умолчанию для нового хранилища
Я установил gitolite (локально на данный момент, для экспериментов), и он, кажется, работает, за исключением того, что новые репозитории не отслеживают удаленный по умолчанию после клона git. Если я правильно помню, когда я клонирую репозиторий с github.com, он уже может толкать и тянуть.
Вот что я попробовал:
$ git clone git@localhost:sandbox
Cloning into sandbox...
warning: You appear to have cloned an empty repository.
$ echo "A" > README
$ git add README
$ git commit README -m 'test'
$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@localhost:sandbox'
Когда я пытаюсь нажать явно, все работает:
$ git push origin master
Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 426 bytes, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@localhost:sandbox
* [new branch] master -> master
Этот дополнительный шаг действительно необходим? Можно установить по умолчанию? На github это не так?
Спасибо
2 ответа
Первый git push всегда требует указать ветку, которую вы хотите нажать.
git push -u origin master
Затем можно выполнить следующее нажатие из той же ветви, что и вы:
git push
От git push
справочная страница:
Специальный refspec
:
(или же+:
чтобы разрешить обновления без ускоренной пересылки) направляет git выдвигать "совпадающие" ветви: для каждой ветви, которая существует на локальной стороне, удаленная сторона обновляется, если ветка с таким же именем уже существует на удаленной стороне.
Это режим работы по умолчанию, если не найдено явного refspec.
Так как вы клонировали пустой репозиторий, при первом нажатии не найдено ни одной подходящей ветви (в исходящем репо ее нет)origin
")
Примечание: см. " Что является результатомgit push origin
?":
Политика по умолчанию для git push изменится с git 2.0 (или, может быть, git1.9)
Новый режим для push "
simple
"Это нечто среднее между"current
" а также "upstream
", был введен.
"git push
msgstr "без каких-либо refspec вытолкнет текущую ветвь с тем же именем в удаленном хранилище, только когда она настроена на отслеживание ветки с тем же именем там.
План состоит в том, чтобы сделать этот режим новым значением по умолчанию, когдаpush.default
не настроен.
Так что в git push -u origin master
, -u
(--set-upstream-to
) здесь важно (не просто передать ветку с тем же именем на удаленныйorigin
', но это удаленная ветка отслеживания.
Ты можешь использовать git branch --set-upstream
команда, например:git branch --set-upstream develop origin/develop