Извлечение названий филиалов из ловушки после оформления заказа

При переключении с одной ветви на другую в Git, есть ли способ получить имена обеих ветвей из ловушки после проверки?

Предполагая, что я должен был выполнить следующие две команды:

$ git branch
* branch_a
  branch_b
  master

$ git checkout branch_b
Switched to branch 'branch_b'

Я бы искал следующие две строки (в хуке после оформления заказа):

"branch_a"
"branch_b"

2 ответа

Решение

Ты можешь использовать git reflog внутри вашего крючка, чтобы получить предыдущую и следующую ветку. Вот простой рабочий пример:

#!/bin/bash

# $6 = previous branch, $8 is next branch
git reflog | awk 'NR==1{ print $6 " -> " $8; exit }'

РЕДАКТИРОВАТЬ: обновленный ответ. Вот предыдущий:

Этот хук дается с тремя аргументами:

  • ссылка на предыдущую ГОЛОВУ
  • ссылка на новую ГОЛОВУ
  • 1, если это была проверка филиала, 0 для проверки файла.

С двумя первыми у вас должно быть достаточно информации для того, что вы пытаетесь сделать.

Вот полный пример, основанный на ответе @GHugo

      PREV_BRANCH=`git reflog | awk 'NR==1{ print $6; exit }'`
NEW_BRANCH=`git reflog | awk 'NR==1{ print $8; exit }'`
echo "PREV_BRANCH: $PREV_BRANCH"
echo "NEW_BRANCH: $NEW_BRANCH"
Другие вопросы по тегам