Если вы запустите:
git push
без дополнительных аргументов, Git необходимо знать , что отправить и , куда его отправить .
куда отправить часть обычно является именем remote . Обычное имя для (одного) пульта - origin
, поэтому:
git push origin
сообщает Git, куда его отправлять: origin
. Git все еще нужно знать что отправлять .
Когда вы используете git push
, вы выбираете коммит или коммит для отправки. Значения по умолчанию здесь зависят от вашей версии Git, но у вас, вероятно, установлена Git 2.0 или более поздняя версия (более ранняя версия с ее значением по умолчанию выдаст вам другую ошибку или ее нет). В этом случае по умолчанию ищется информация, связанная с вашим текущим именем ветви .
(сообщение об ошибке, которое вы должны были вставить в сам вопрос, а не как добавленный комментарий позже говорит, что вы находитесь на master
.)
Информация, которую ищет Git, называется upstream . Каждое имя ветви, такое как master
, может иметь один набор исходящих. Чтобы установить восходящий поток, вы можете использовать:
git branch --set-upstream-to=<target>
target
здесь будет указывать оба удаленный (origin
) и имя ветви на пульте дистанционного управления , которое в этом случае будет master
. Ваш Git затем попросит их Git - тот, что на origin
- установить своего мастера, основываясь на коммите (ах), которые Git отправляет, как найдено вашим master
.
Сообщение об ошибке, которое вы цитировали:
use git push --set-upstream README.md master
- это не то, что Git напечатало бы; вместо этого он сказал бы:
use git push --set-upstream origin master
Этот --set-upstream
флаг является вспомогательным флагом. У вас нет , чтобы сделать это, так же, как у вас нет , чтобы использовать git branch --set-upstream-to
. Вы можете просто запустить:
git push origin master
каждый раз, чтобы сообщить Git: , позвонить Git в origin
; дайте ему коммиты от моего master
и попросите его установить его master
.
Если вы запустите:
git branch --set-upstream-to=origin/master
, вы установите восходящий поток для текущая ветка до origin/master
, что означает, что теперь вы можете запустить git push
без аргументов. Или, если вы запустите:
git push --set-upstream origin master
(обратите внимание на различное написание каждого аргумента!) Ваш Git будет выполнять начальный git push origin master
так же, как вы, но затем, если это удастся, ваш Git будет работать:
git branch --set-upstream-to=origin/master master
Обратите внимание, что это немного отличается от предыдущего: это говорит вашему Git, чтобы установить восходящий поток вашего master
на origin/master
, а не устанавливать восходящий поток ваша текущая ветка . Поскольку ваша текущая ветвь равна master
, все работает одинаково.