У меня нет глубоких знаний о git
, однако в git
обычно есть {remote}/HEAD
, например, origin/HEAD
.Вот выдержка из справочной страницы git remote
:
set-head
Sets or deletes the default branch (i.e. the target of the
symbolic-ref refs/remotes/<name>/HEAD) for the named remote.
Having a default branch for a remote is not required, but allows
the name of the remote to be specified in lieu of a specific
branch. For example, if the default branch for origin is set to
master, then origin may be specified wherever you would normally
specify origin/master.
Из этого я понимаю, что {remote}/HEAD
является основной / стандартной веткой {remote}
.Можно получить имя ветви, используя это (кто-нибудь знает команду лучше / слесарное дело?):
# With "remotes/"
git branch -r | grep -Po "HEAD -> \K.*$"
remotes/origin/master
# Without "remotes/"
git branch -r | grep -Po "HEAD -> remotes/\K.*$"
origin/master
Когда кто-то хочет получить локальную ветку main / default, обычно нет HEAD
ветвь, однако обычно есть одна-единственная ветвь, которая отслеживает {remote}/HEAD
, имя которого мы можем использовать (опять же, безусловно, это лучшая команда):
git branch -vv | grep -Po "[ *gb]*\K[^ ]*(?=[ ][ 0-9a-f]* \[$(git branch -r | grep -Po "HEAD -> \K.*$"))"
master