Извлечение названий филиалов из ловушки после оформления заказа
При переключении с одной ветви на другую в 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"