Чем отличаются Git @ {upstream} и @ {push}? - PullRequest
2 голосов
/ 29 января 2020

В чем разница между Git веткой @{upstream} и более новой @{push}?

Насколько я понимаю, @{upstream} - это ссылка на отслеживание восходящей ветви, а @{push} - ссылка push будет пу sh до. На мой взгляд, это одно и то же. Проверка нескольких удобных веток git rev-parse @{upstream} - это то же самое, что и git rev-parse @{push}, и (я подумал, что, возможно, один не разрешится таким же образом) git rev-parse --abbrev-ref @{upstream} - это то же самое, что и git rev-parse --abbrev-ref @{push}.

1 Ответ

4 голосов
/ 29 января 2020

@{upstream} и @{push} действительно указывают на одно и то же ... когда они делают .

Шутки в сторону, я имею в виду, что это только совпадение, это следствие для две записи конфигурации, указывающие на один и тот же пульт, но они могут отличаться.

На есть отличная пример .

В частности, эта часть:

Суффикс @{push} сообщает ветвь "где мы будем pu sh в", если бы git pu sh были запущены, когда отозвано значение branchname (или текущее значение HEAD, если не указано значение branchname ). Поскольку наш пункт назначения pu sh находится в удаленном хранилище, мы, конечно, сообщаем о локальной ветви отслеживания, которая соответствует этой ветви (то есть что-то в refs/remotes/).

$ git config push.default current
$ git config remote.pushdefault myfork
$ git switch -c mybranch origin/master

$ git rev-parse --symbolic-full-name @{upstream}
refs/remotes/origin/master

$ git rev-parse --symbolic-full-name @{push}
refs/remotes/myfork/mybranch

Обратите внимание, что в примере мы настроили рабочий процесс tri angular, в котором мы вытягиваем из одного местоположения и pu sh в другое. В не три angular рабочем процессе @{push} совпадает с @{upstream}, и в этом нет необходимости.

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