Все остальные ответы говорят о «восходящем» (ветке, из которой вы тянете).
Но местное отделение может подтолкнуть к другому ветви , чем тот , что вытягивает из.
master
может не перейти в ветку удаленного отслеживания " origin/master
". Вверх ветви для может быть , но это может подтолкнуть к удаленному трекинга ветви или даже .
Они устанавливаются для текущей ветви вместе со значением.
master
origin/master
origin/xxx
anotherUpstreamRepo/yyy
branch.*.pushremote
global remote.pushDefault
Это та ветвь удаленного отслеживания, которая учитывается при поиске незафиксированных коммитов: та, которая отслеживает, branch at the remote
куда будет помещена локальная ветвь . Может быть, опять же , или даже .
branch at the remote
origin/xxx
anotherUpstreamRepo/yyy
Git 2.5+ (второй квартал 2015 года) представляет новый ярлык для этого: <branch>@{push}
См. Коммит 29bc885 , коммит 3dbe9db , коммит adfe5d0 , коммит 48c5847 , коммит a1ad0eb , коммит e291c75 , коммит 979cb24 , коммит 1ca41a1 , коммит 3a429d0 , коммит a9f9f8c , коммит 8770e6f , коммит da66b27 , коммит f052151f , коммит f052151 , коммит 9 ee все от 9 коммитов 2015] и передайте e41bf35 [01 мая 2015] Джеффом Кингом ( peff
) .
(Объединено Джунио С Хамано - gitster
-в коммит c4a8354 , 05 июня 2015 г.)
Коммит adfe5d0 объясняет:
sha1_name
: реализовать @{push}
стенографию
В треугольном рабочем процессе каждая ветвь может иметь две различные точки интереса: тот @{upstream}
, из которого вы обычно тянете, и пункт назначения, к которому вы обычно продвигаетесь. Для последнего нет сокращения, но его полезно иметь.
Например, вы можете узнать, какие коммиты вы еще не выдвинули :
git log @{push}..
Или, как более сложный пример, представьте, что вы обычно извлекаете изменения origin/master
(которые вы задали как свои @{upstream}
) и помещаете изменения в свой личный форк (например, as myfork/topic
).
Вы можете выдвинуть на свою вилку несколько компьютеров, требуя интегрировать изменения из места назначения push, а не в восходящий поток .
С этим патчем вы можете просто сделать:
git rebase @{push}
вместо того, чтобы вводить полное имя.
Commit 29bc885 добавляет:
for-each-ref
: принять " %(push)
" формат
Так же, как у нас есть « %(upstream)
», чтобы сообщить « @{upstream}
» для каждой ссылки, этот патч добавляет « %(push)
« для соответствия » @{push}
».
Он поддерживает те же модификаторы формата отслеживания, что и в восходящем потоке (потому что вы можете захотеть узнать, например, какие ветви имеют коммиты для отправки ).
Если вы хотите увидеть, сколько коммитов ваши локальные ветви опережают / отстают по сравнению с веткой, на которую вы нажимаете:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
git log @{push}..
. Посмотрите на этот новый ярлык@{push}
(ссылаясь на ветку удаленного отслеживания, на которую вы нажимаете) в моем ответе ниже