Зачем включать `master` в команду` git fetch upstream master`? - PullRequest
8 голосов
/ 06 января 2010

В разделе Изменения в восходящем потоке на help.github's Форкирование проекта в нем говорится:

Прошло некоторое время, изменилось вышестоящее репо, и вы хотите обновить свой форк, прежде чем отправлять новый патч. Есть два способа сделать это:

$ git fetch upstream master

$ git merge upstream/master

Почему они включают master в команду fetch? Я просмотрел информацию git help fetch, но не понимаю, что включает в себя master. Спасибо.

1 Ответ

6 голосов
/ 06 января 2010

Это позволяет вам:

  • обновить только вашу локальную версию главной ветки восходящего потока (в отличие от обновления всех ветвей репо восходящего потока, что может занять больше времени)
  • не вызывает слияния сразу (в отличие от команды pull)

Затем git merge попытается объединить эту локальную версию основного мастера с вашей основной веткой репо.

Так что здесь, master, для команды fetch, является refspec.

<refspec>

Формат параметра <refspec> является необязательным плюсом +, за которым следует источник ref <src>, за которым следует двоеточие:, за которым следует пункт назначения <dst>.

Удаленная ссылка, которая соответствует <src>, выбирается, и если <dst> не является пустой строкой, локальная ссылка, которая соответствует ей, быстро пересылается с помощью <src>.
Если используется дополнительный плюс +, локальная ссылка обновляется, даже если это не приводит к обновлению в ускоренном режиме.

Здесь <dst> пусто, поэтому соответствующая локальная ветвь (ваш мастер) обновлена.


Без хозяина это дало бы:

git fetch upstream 

Приведенная выше команда копирует все ветви из удаленного пространства имен refs/heads/ и сохраняет их в локальном пространстве имен refs/remotes/upstream/, если только параметр branch.<name>.fetch не используется для указания refspec не по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...