Обновление: Что ж, прошло уже несколько лет, как я это опубликовал! Для моей конкретной цели сравнения HEAD с восходящим потоком я теперь использую @{u}
, что является сокращением, которое ссылается на HEAD восходящей ветви отслеживания. (См. https://git -scm.com / docs / gitrevisions # gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem ).
Оригинальный ответ: Я тоже сталкивался с этой проблемой. Я часто использую несколько пультов в одном репозитории, и легко забыть, какой из них отслеживает ваша текущая ветка. И иногда это полезно знать, например, когда вы хотите посмотреть свои локальные коммиты через git log remotename/branchname..HEAD
.
Все это хранится в переменных git config, но вам не нужно анализировать выходные данные git config. Если вы вызываете git config, за которым следует имя переменной, она просто напечатает значение этой переменной, анализ не требуется. Имея это в виду, вот несколько команд для получения информации о настройке отслеживания вашей текущей ветки:
LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`
В моем случае, поскольку меня интересует только имя моего текущего пульта, я делаю это:
git config branch.`git name-rev --name-only HEAD`.remote