@{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}
, и в этом нет необходимости.