Ответ 1
Лучшее решение для нас, на которое указывает @SébastienDawans, было git show -s --pretty=%d HEAD
. Результат похож на remotes/origin/<branch name>
, поэтому, возможно, требуется очистка, но для наших нужд это просто отлично.
У нас есть script, который фактически выполняет git fetch; git checkout origin/<branch>
для развертывания определенной функции. Причина, по которой мы делаем это, заключается в том, что мы не должны избегать локальных ветвей (это тестовый сервер), поэтому script просто извлекает последние изменения и проверки в него, а затем перезагружает сервер.
Мы также создаем журнал, описывающий каждое сделанное развертывание, которое отправляется по электронной почте кому-то и архивируется. Интересно, что мы отправляем также развернутую ветку, но проблема в том, что когда мы делаем checkout origin/<branch>
, мы переходим к отделить голову. Я прочитал несколько ответов с похожим вопросом, но ничего особенного.
Есть ли способ распечатать какую ветвь я в этом случае (независимо от пользовательского ввода, конечно)?
Лучшее решение для нас, на которое указывает @SébastienDawans, было git show -s --pretty=%d HEAD
. Результат похож на remotes/origin/<branch name>
, поэтому, возможно, требуется очистка, но для наших нужд это просто отлично.
git symbolic-ref --short HEAD
должен указать вам, в какой ветке вы находитесь, или распечатать сообщение об ошибке, если вы не находитесь на ветке.
Здесь git nthlastcheckout
, он получает точную строку, которую вы использовали (или все после последнего пробела) для последней n-й выписки из reflog:
git config --global alias.nthlastcheckout '!nthlastcheckout'"() {
git reflog |
awk '\$3==\"checkout:\" {++n}
n=='\${1-1}' {print \$NF; exit}
END {exit n!='\${1-1}'}'
}; nthlastcheckout \"\[email protected]\""
Примеры:
$ git nthlastcheckout
master
$ git nthlastcheckout 2
v1.3.0^2