Я получил это сообщение от Мерзавца:
Вы попросили вытягивать от удаленного 'источника', но не указывали ответвление. Поскольку это не значение по умолчанию, настроенное удаленный для Вашего текущего ответвления, необходимо указать ответвление по командной строке.
Кто-либо может объяснить это? и более важный, как зафиксировать его?
Вы должны указать git, какую ветку вы хотите извлечь из "исходных" удаленных репозиториев.
Думаю, вам нужна ветка по умолчанию (мастер), поэтому git pull origin master
должен исправить вашу проблему.
См. git help branch
, git help pull
и git help fetch
для получения дополнительной информации.
В сообщении точно сказано, о чем оно. Ваша текущая ветка не связана (не отслеживает) ни с одной веткой в origin . Итак, git не знает, что тянуть.
Что делать? Это зависит от...
В большинстве случаев вы работаете с некоторой локальной веткой xyz , которая разветвляется от мастера , который клонирован от мастера origin . Обычный способ решить эту проблему - переключиться на мастер и потянуть, чтобы синхронизировать его с origin , а затем вернуться к xyz и rebase master
].
Но в вашей ситуации вы можете захотеть сделать что-нибудь еще. Мы не можем знать этого, не зная подробностей о ваших ветках и пультах, а также о том, как вы собираетесь их использовать.
Чтобы исправить это, предположим, что вы находитесь на ветке master
и хотите получить ветку master
из удаленной ветки origin
, в достаточно новых версиях Git (1. 8 или новее):
git branch -u origin/master master
(Аналогично для других веток и/или удалённых узлов.)
Если вы можете совместить это с push, это ещё короче:
git push -u origin master
После этого обычные git pull
/git push
будут делать то, что вы ожидаете.
В серии Git 1.7 в git branch
не было ключа -u
(только git push
), и вместо него нужно было использовать гораздо более длинный --set-upstream
:
git branch --set-upstream master origin/master
Обратите внимание на изменение аргументов по сравнению с -u
. Я не раз путался в этом порядке.
Все это, кстати, сокращение для выполнения следующих действий, которые вы все еще можете выполнить явно:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
До версии 1.7 вы должны были делать это следующим образом.