самый быстрый способ получить имя текущей ветви или соответствующую строку, если не на ветви - PullRequest
4 голосов
/ 25 апреля 2019

На данный момент я использую

git branch | grep \* | cut -d ' ' -f2-

Но это слишком медленно с точки зрения времени выполнения.

Есть ли более быстрый способ генерировать тот же результат?

И я имею в виду идентичный вывод (я не видел ни одного случая, который мне не нравился), например отдельные головы

(HEAD detached at SHA)

перебазирования

(no branch, rebasing BRANCH)

и т.д.


Я уже пробовал, например.

cat .git/HEAD | cut -d '/' -f3

но я знаю, что иногда, например если перебазировать, это не сработает. Тогда я должен был бы проверить на наличие .git/REBASE_HEAD? Также существует проблема с поиском каталога .git из любого подкаталога. В конце концов, я не знаю, будет ли решение, подобное этому, быстрее, по крайней мере, вероятно, если я (с моей неопытностью) буду его кодировать.

Ответы [ 4 ]

3 голосов
/ 25 апреля 2019

Вы также можете использовать git rev-parse: (но, к сожалению, как и для других ответов, не обрабатывает случай перебазирования в процессе)

git rev-parse --abbrev-ref HEAD

И rev-parse, и symbolic-ref - это сантехнические команды, вероятно, очень близкие по времени выполнения.

2 голосов
/ 25 апреля 2019

Вы также можете использовать git symbolic-ref .Однако, будьте осторожны, так как это не работает , когда перебазирует .

git symbolic-ref --short HEAD

Кстати, это более короткая команда, которую я знаю, чтобы получить эту информацию(29 символов)

1 голос
/ 25 апреля 2019

Если вам не нужно использовать команды git, вы можете просто прочитать название ветки из фактической папки .git.

cat .git/HEAD | cut -d '/' -f3

Это прерывается, когда вы не находитесь ни в одной ветке (как и другие), во время которой он будет возвращать SHA коммита, в котором вы находитесь (в отличие от других). Я не могу думать ни о какой другой ситуации, где она может сломаться.

1 голос
/ 25 апреля 2019

Я удивлен, что это так медленно, но вы можете попробовать это.Может быть одинаково медленно.
git status|head -n1|cut -d ' ' -f4

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