Все остальные ответы говорят о «восходящем» (ветке, из которой вы тянете).
Но локальная ветвь может выдвинуть в другую ветвь, чем та, из которой она вытягивает.
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}
См. commit 29bc885 , commit 3dbe9db , commit adfe5d0 , commit 48c5847 , commit a1ad0eb , commit e291c75 , commit 979cb24 , commit 1ca41a1 , commit 3a429d0 , commit a9f9f8c , commit 8770e6f , commit da66b27 , commit f052154 , commit 9e3751d , commit ee2499f [все с 21 мая 2015 года] и совершить e41bf35 [01 мая 2015] Джефф Кинг (peff
) .
(Объединено с Junio C Hamano - gitster
- in commit c4a8354 , 05 июня 2015 г.)
Commit adfe5d0 объясняет:
sha1_name
: внедрить @{push}
стенография
В треугольном рабочем процессе каждая ветвь может иметь две различные точки интереса: @{upstream}
, из которого вы обычно тянете, и пункт назначения, в который вы обычно толкаете. Для последнего нет сокращения, но полезно иметь его.
Например, вы можете знать, какие коммиты у вас нет
нажал еще :
git log @{push}..
Или, как более сложный пример, представьте, что вы обычно извлекаете изменения из origin/master
(который вы установили как @{upstream}
) и помещаете изменения в свой личный форк (например, как myfork/topic
).
Вы можете выдвинуть на свою вилку несколько компьютеров, требуя, чтобы вы интегрировали изменения от места назначения push, а не * upstream .
С этим патчем вы можете просто:
git rebase @{push}
вместо того, чтобы вводить полное имя.
Фиксация 29bc885 добавляет:
for-each-ref
: принять формат %(push)
Так же, как у нас есть «%(upstream)
», чтобы сообщить «@{upstream}
» для каждого реф, этот патч добавляет «%(push)
» для соответствия «@{push}
».
Он поддерживает те же модификаторы формата отслеживания, что и в восходящем потоке (потому что вы, возможно, захотите узнать, например, в каких ветвях есть коммиты для нажатия ).
Если вы хотите увидеть, сколько коммитов ваши локальные ветви на впереди / позади по сравнению с веткой, на которую вы нажимаете:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads