Команду для определения восходящего потока текущего HEAD?

Я ищу, что я надеюсь, это простая команда одной строки, чтобы определить правильный refstream ref для текущей проверенной ветки?

По существу что-то вроде

git branch --remote HEAD

который (если он сработает) преобразует символический шаблон HEAD в текущее имя ветки, а затем параметр --remote затем изменяет его на ref от ветки удаленного отслеживания. (Но это не так!)

Если у меня есть ветвь morehelp с конфигурацией

remote = origin
merge = refs/heads/morehelp

Простая командная строка вернет refs/remotes/origin/morehelp, которая является веткой отслеживания восходящего потока (идеально подходит для случая git reset --hard <ref> для обновления путем перезаписывания)

Ответ 1

Я думаю, что вы хотите

git rev-parse --symbolic-full-name @{u}

@{u} - это аббревиатура ветки отслеживания восходящего потока HEAD, а опция сообщает rev-parse распечатать ее в нужном вам формате, а не печатать идентификатор фиксации SHA.

От git help rev-parse

   --symbolic
       Usually the object names are output in SHA1 form (with possible ^ prefix); this option makes them output in a form as close to the original
       input as possible.

   --symbolic-full-name
       This is similar to --symbolic, but it omits input that are not refs (i.e. branch or tag names; or more explicitly disambiguating
       "heads/master" form, when you want to name the "master" branch when there is an unfortunately named tag "master"), and show them as full
       refnames (e.g. "refs/heads/master").