Если ваш вопрос о , что опция -u
для git push
делает , это дубликат: см. Почему мне нужно "git push --set-upstream origin "? и Как перенести новую локальную ветку в удаленный репозиторий Git и отследить ее тоже? Этот ответ о том, почему книга 2012 года не содержит опцию, которая не была особенно необходимо тогда.
Предполагая, что вы имеете в виду эту конкретную книгу Контроль версий с Git , опубликованную в августе 2012 года , причина, по которой он не предлагает использовать git push -u
, заключается в том, что она была опубликована в 2012 году.
Дата выхода Git 2.0:
$ git show v2.0.0
tag v2.0.0
Tagger: Junio C Hamano <gitster@pobox.com>
Date: Wed May 28 11:04:29 2014 -0700
, что, как вы видите, более позднее, чем 2012. Теперь взгляните на версию 1.7.11:
$ git show v1.7.11
tag v1.7.11
Tagger: Junio C Hamano <gitster@pobox.com>
Date: Sun Jun 17 14:07:26 2012 -0700
Хотя это 2012 год, в 2012 году уже достаточно поздно, чтобы, вероятно, было уже слишком поздно для книги.
Мне не понятно, к чему относится Git Pocket Reference , но, вероятно, оно было написано или обновлено после выхода Git 2.0.
Почему 2.0 и 1.7.11 актуальны
Git версии 1.7.11 представил новый параметр для push.default
с именем simple
. При использовании настройки simple
Git накладывает новое требование на операции по умолчанию git push
: upstream имя ветви, которую вы нажимаете, должно совпадать с local name. То есть, если восходящий поток вашего dev
равен origin/develop
, git push
без refspec, не удастся . Между тем, если есть нет upstream для вашего dev
, git push
без refspec также завершится неудачей.
(При использовании параметра push.default
с именем matching
обе эти операции по умолчанию git push
будут выполняться до завершения, но вы подтолкнете ваш dev
к dev
на origin
, если он существует, или нет нажмите на dev
вообще, если origin
не имеет dev
.)
Если вы лично оставили push.default
неустановленным , параметр обрабатывается как matching
в версиях Git, предшествующих 2.0, и как simple
в версиях Git 2.0 и выше. Поскольку вся или большая часть книги была написана до выхода Git 1.7.11, вряд ли можно было подумать, как настройка simple
повлияет на git push
. Так что в ней не упоминается -u
опция.
В современных описаниях будет отмечено, что --set-upstream
важен, так что будущие git push
операции без refspecs будут вести себя так, как вы хотели бы, предполагая, что вы используете Git версии 2.0 или новее и выбрали не по умолчанию push.default
, Поэтому они будут вызывать git push --set-upstream origin new-branch
, или то же самое с более коротким написанием -u
(что означает то же самое в git push
).