В вашем случае вам нужна буквальная последовательность:
git fetch origin
git merge @{upstream}
git merge origin/dev
(я убрал одинарные кавычки, поскольку они здесь ничего не достигают).
Описание @{upstream}
появляется в документации gitrevisions , что довольно плотно 1 и со временем заслуживает многократных перечитываний. Фактически это суффикс , который можно применить к любому имени ветки:
master@{upstream}
develop@{upstream}
и так далее. Применительно к HEAD
- текущему имени ветки - в HEAD@{upstream}
, он относится к восходящему потоку текущей ветки, как и следовало ожидать. 2 Добавьте это вместе с обычной «пустой строкой» означает HEAD, где уместно "правило - например, master..
сокращенно от master..HEAD
, а @{upstream}
сокращенно от HEAD@{upstream}
.
Обратите внимание, что <em>name</em>@{upstream}
не выполняется (с сообщением об ошибке), если есть не установлен восходящий поток для ветви. Вы также можете использовать git rev-parse
для любых вещей, приемлемых с помощью правил gitrevisions, чтобы превратить его в выражение more-basi c Git. Иногда это полезно в сложных сценариях, поскольку позволяет найти идентификатор ha sh, который можно использовать, даже если имя изменяется по мере того, как вы продолжаете делать что-то в репозитории.
1 «Плотный» в смысле «наполнен информацией», а не в смысле «глупый»; но также «плотный» в смысле труднопостижимости.
2 «Могущество», вероятно, лучше, чем «должен», поскольку иногда Git делает вещи, которые удивляют, если вы не знаете всех подробностей о трюках реализации внутри Git.