Как получить все эквивалентные ветки на рабочей копии git? - PullRequest
0 голосов
/ 09 октября 2018

С git branch я могу получить только одну ветвь как "текущую", даже если извлеченный коммит соответствует более чем одной ветке.

В инструментах типа tig все ветви, которыеуказать на тот же коммит.Например:

master upstream/master origin/master

Как я могу извлечь эту информацию из git самой?

Я хотел бы, чтобы это было видно в моем приглашении (для меня важно знать, что мойрабочая копия соответствует upstream / master, когда я работаю над выталкиванием кода).Есть ли какой-нибудь инструмент командной строки, который даст мне эту информацию?

В настоящее время моя подсказка bash включает

/usr/bin/git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'

, которая будет показывать только "(master)" (то есть локальная ветвь).

Ответы [ 3 ]

0 голосов
/ 10 октября 2018
git branch --all --contains HEAD
0 голосов
/ 10 октября 2018
git branch --all --points-at HEAD

- это то, что вы ищете в соответствии с руководством:

   -a, --all
       List both remote-tracking branches and local branches.

  --points-at <object>
       Only list branches of the given object.

Существуют варианты, если вы хотите также видеть другие ссылки (например, теги) или использовать результат в скриптах - в которыхЕсли вы не хотите возиться с sed, просто чтобы удалить ненужные вещи:

> git for-each-ref --points-at HEAD --format="%(refname:short)" refs/heads refs/remotes
master
otherbranch
origin/master
origin/HEAD
0 голосов
/ 09 октября 2018
git log -1 --pretty=%D

получит вам текст

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...