Я получил это сообщение от Git:
Вы просили извлечь из удаленного «origin», но не указали ветку. Поскольку это не настроенный по умолчанию пульт для вашей текущей ветки, вы должны указать ветку в командной строке.
Кто-нибудь может это объяснить? а главное как исправить?
git pull
извлекает и объединяется с текущей веткой, поэтому его поведение полностью зависит от того, какая ветка извлечена, а с отсоединенной HEAD (ни одна ветка не извлечена), он не может знать, какую ветку вытащить.Чтобы исправить это, если вы находитесь в
master
ветке и хотите получитьmaster
ветку сorigin
пульта дистанционного управления, в достаточно новых версиях Git (1.8 или новее):(Аналогично для других веток и / или пультов.)
Если вы можете совместить это с толчком, это будет еще короче:
После этого обычный
git pull
/git push
будет делать то, что вы ожидаете.Во время серии Git 1.7
git branch
не было-u
переключателя (толькоgit push
был), и вместо этого вам пришлось использовать гораздо дольше--set-upstream
:Обратите внимание на обратные аргументы по сравнению с
-u
. Я не раз возился с этим заказом.Все это, кстати, является сокращением для следующих действий, которые вы все еще можете делать явно:
До версии 1.7 это нужно было делать так.
источник
git branch --set-upstream master origin/master
-u
опция недокументированаgit branch
в моей версии 1.8.5.3, что делает вашу документацию по ней еще более важной. И, как вы заметили, эта опция была недоступна в версии 1.7. *. Поскольку-u
это сокращение от--set-upstream
, не следует ли изменить порядок его аргументов, как вы,--set-upstream
из-за комментария @EvanDonovan?git branch -u origin/master master
), она работает так, как ожидалось / предназначено для меня: «Мастер ветки настроен для отслеживания удаленного мастера ветки из источника».-u
Переключатель на самом деле не короткая форма--set-upstream
. Его порядок аргументов фактически обратный порядку для--set-upstream
. Я думаю, что--set-upstream-to
(обратите внимание на «-to») было введено только позднее, что на-u
самом деле является сокращенной формой.Сообщение говорит именно о том, о чем идет речь. Ваша текущая ветка не связана (не отслеживает) ни с одной веткой в origin . Итак, git не знает, что тянуть.
Что делать? Это зависит от...
В большинстве обычной ситуации вы отработка некоторых местного филиала А который разветвленные от мастера , который клонировал происхождений «ы мастера. Обычный способ решить эту проблему - переключиться на master и pull, чтобы синхронизировать его с origin, а затем вернуться к xyz и
rebase master
.Но в вашей ситуации вы можете захотеть сделать что-нибудь еще. Мы не можем знать этого, не зная подробностей о ваших ветках и пультах, а также о том, как вы собираетесь их использовать.
источник